##メールアドレスからドメイン名(.com)を取り出す作業をPHPの関数で実行してみる。
↓今回の目標(メールアドレスからドメイン名を取得する)
##今回使う関数
- メールアドレスの「@」が何文字目かを調べる関数
- メールアドレスの「○」文字目から後ろの文字列を取り出す関数
strpos関数を使って「@」の位置を抽出する
<?php
echo strpos("mail@tsukishimaao.com", "@");
?> //4
「strpos関数」は、文字列から指定された値を探す関数です。見つかった位置を数値で返します。ただし、その値は0から始まるので、「4」が返されたという事は「5文字目」に含まれている事を示しています。
上記の例では、メールアドレスから検索した「@」が5番目に見つかったので、0から数えて4
の値が出ました。
substr関数とは?
「文字の一部を切り取る」関数
まず「substr関数」の使用例を見てみましょう。
<?php
echo substr("mail@tsukishimaao.com", 5, 12);
?> //tsukishimaao
この関数で何が起こってるか説明していきます。
echo substr("mail@tsukishimaao.com", 5, 12);
の最後尾に, 5, 12
と数字が入っています。
これは
「mail@tsukishimaao.com
の先頭から5番目
の文字を頭にそこから12番目
の文字までを取得する。」
という意味です。
ただし、「数の数え方は0からです」。
よってmail@tsukishimaao.com
の先頭から5番目(最初は0番目)はtsukishimaao
のt
になります。
次に、そこから12文字分を
を取得なのでt
から12個かぞえて行くと12文字目はtsukishimaao
のo
です。
よって、取得した合計は='tsukishimaao'ということになります。
指定位置から後の文字列すべてを取得
もし、下の様に「取得する文字数」を省略したらどうでしょう?
<?php
echo substr("mail@tsukishimaao.com", 5);
?> // tsukishimaao.com
つまり0
から数えて5
文字以降すべての文字列が取得されています。
現実的にはこちらの方が使用度が多いのではないかと思います。
PHPスクリプト
メールアドレスからドメイン名を取得するPHPスクリプトを実際に書いてみます。
<?php
$a = "mail@tsukishimaao.com";
$b = strpos($a, "@");
echo substr($a, $b);
?> // @tsukishimaao.com
まだ@
がついてますが、ここまで抽出出来ました。
最後に@を消して完成する。
以下の様に対応します。↓
(substr関数
の2番目のパラメーターに[+1]を追加する)
<?php
$a = "mail@tsukishimaao.com";
$b = strpos($a, "@");
echo substr($a, $b + 1);
?>
以上簡単では有りましたが、phpの「文字列関数」を利用して、メールアドレスからドメイン名を取得するをやってみました。