LoginSignup
20
22

More than 5 years have passed since last update.

PHP「関数」、「特定の文字列を抜き取る」

Last updated at Posted at 2014-04-26

メールアドレスからドメイン名(.com)を取り出す作業をPHPの関数で実行してみる。

↓今回の目標(メールアドレスからドメイン名を取得する)
php01.png

今回使う関数

  • メールアドレスの「@」が何文字目かを調べる関数
  • メールアドレスの「○」文字目から後ろの文字列を取り出す関数

strpos関数を使って「@」の位置を抽出する

<?php
echo strpos("mail@tsukishimaao.com", "@");
?>  //4

実行結果↓
php2.png

「strpos関数」は、文字列から指定された値を探す関数です。見つかった位置を数値で返します。ただし、その値は0から始まるので、「4」が返されたという事は「5文字目」に含まれている事を示しています。
上記の例では、メールアドレスから検索した「@」が5番目に見つかったので、0から数えて4の値が出ました。

substr関数とは?

「文字の一部を切り取る」関数

まず「substr関数」の使用例を見てみましょう。


<?php
echo substr("mail@tsukishimaao.com", 5, 12);
?>  //tsukishimaao


実行結果↓
php03.png

この関数で何が起こってるか説明していきます。

echo substr("mail@tsukishimaao.com", 5, 12);の最後尾に, 5, 12と数字が入っています。
これは

mail@tsukishimaao.comの先頭から5番目の文字を頭にそこから12番目の文字までを取得する。」

という意味です。

ただし、「数の数え方は0からです」。

よってmail@tsukishimaao.comの先頭から5番目(最初は0番目)はtsukishimaaotになります。

次に、そこから12文字分をを取得なのでtから12個かぞえて行くと12文字目はtsukishimaaooです。

よって、取得した合計は='tsukishimaao'ということになります。

指定位置から後の文字列すべてを取得

もし、下の様に「取得する文字数」を省略したらどうでしょう?


<?php
echo substr("mail@tsukishimaao.com", 5);
?>  // tsukishimaao.com


実行結果↓
php04.png

つまり0から数えて5文字以降すべての文字列が取得されています。

現実的にはこちらの方が使用度が多いのではないかと思います。

PHPスクリプト

メールアドレスからドメイン名を取得するPHPスクリプトを実際に書いてみます。

<?php
$a = "mail@tsukishimaao.com";
$b = strpos($a, "@");

echo substr($a, $b);
?>  // @tsukishimaao.com 

実行結果↓
php05.png

まだ@がついてますが、ここまで抽出出来ました。

最後に@を消して完成する。

以下の様に対応します。↓
(substr関数の2番目のパラメーターに[+1]を追加する)

<?php
$a = "mail@tsukishimaao.com";
$b = strpos($a, "@");

echo substr($a, $b + 1);
?>

実行結果↓
php06.png

以上簡単では有りましたが、phpの「文字列関数」を利用して、メールアドレスからドメイン名を取得するをやってみました。

20
22
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
22