今回は「ある文字列の中に特定の文字があるかどうかを検索する」
方法を紹介したいと思います。日本語の文章で説明すると難しいので、
まずはサンプルプログラムをみてみましょう。
<?php $moji = "隣の竹やぶに竹立てかけたのは、竹立てかけたかったから竹立てかけたのさ"; $pos = mb_strpos($moji, "やぶ"); //$mojiの中に「やぶ」があるか検索 echo $pos;
PHPであらかじめ用意されている文字列に関する関数であるmb_strposは
mb_strpos(検索対象の文字列,検索したい文字列);
という形式で利用します。
関数からの返り値は、検索対象の文字列の最初の文字から、何文字目に
検索したい文字列があったのか、ということになります。
3という数値が表示されていますので「3文字目」に「やぶ」という文字があった
(はじまった)ということを表しています。
ただし、以前から書いている通り、プログラミング界では往々にして、
1文字目を0文字目と表現することになっていますので、
実際には4文字目から「やぶ」という文字があります。
この辺りの感覚になれるまでは大変だと思いますが、繰り返し見ていく中で
段々と慣れていきますので安心してください。
では、検索したい文字が見つからなかった場合はどうなるでしょうか。
<?php $moji = "隣の竹やぶに竹立てかけたのは、竹立てかけたかったから竹立てかけたのさ"; $pos = mb_strpos($moji, "梅"); //$mojiの中に「梅」があるか検索 echo $pos;
今度は「梅」という文字を検索しましたが、画面には何も表示されませんでした。
実は、見つからなかった場合はfalseという返り値を受け取っています。
ただし、falseはechoしても何も表示されません。
そこで、以下の様にサンプルプログラムを修正してみます。
<?php $moji = "隣の竹やぶに竹立てかけたのは、竹立てかけたかったから竹立てかけたのさ"; $pos = mb_strpos($moji, "梅"); //$mojiの中に「梅」があるか検索 if($pos == false){ //見つからなかった場合 echo "not found"; }else{ //見つかった場合 echo $pos; }
今度はnot foundと表示されました。これは、$posがfalseの時に
not foundとechoするようなif文を書いたからです。
今までどおり、見つかった場合は何文字目に見つかったのか、を表示するように
else文を記述しています。
例えば、会員登録の画面で、メールアドレスに「@」が入力されていなければ
間違った入力をしているとわかるでしょう。
そういったシーンで、入力されたメールアドレスという文字列から、「@」を
検索して、見つからなければ、エラーメッセージを表示するというように
利用することができます。