PHP 文字列を含むかを調べる

PHPで文字列を含むかを調べる方法はいくつかあるので調べたいと思います。

strpos

文字列内の部分文字列が最初に現れる場所を見つける関数です。文字列が含まれているかを調べるだけでしたらこちらの関数が一番高速なのでこの関数を使いましょう。注意として文字列の開始位置は 0 であり、1 ではないことを意識せずにそのまま

$str = 'apple';
if(strpos($str,'a')){
  echo 'has a!'; //echo 0
}

などとするとstrposは0を返すので条件文は実行されません

if(strpos($str,'a') !== false){
  echo 'has a!';
}

文字列が見つからなかった場合はfalseを返すのでこのように比較して使いましょう。

strstr(stristr)

文字列が最初に現れる位置を見つける関数です。strposは文字の場所を返しましたが、この関数は最初に現れる場所を含めてそこから文字列の終わりまでを返します。大文字小文字を区別しない場合stristrを使います。

$email = 'kimera@kimera.com';
echo strstr($str,'@'); //echo @kimera.com

preg_match

正規表現によるマッチングを行う関数です

if (preg_match("/CakePHP/i", "このサービスはcakephpで開発されています")) {
    echo "マッチしました。";
  } else {
    echo "マッチしませんでした。";
  }
}
//echo マッチしました