CodeLog

特定の文字列が含まれているかを判定する

対象の文字列の中に特定の文字列が含まれているかを判定する方法です。

if(strpos($str,'abc') !== false){
  //'abc'が含まれている場合
}

strpos関数を使って、特定の文字列が含まれているかを判定することができます。

本来、strpos関数は検索文字が何バイト目にあるかを判定するものですが、検索文字がない場合はfalseを返すため、これを応用して文字列が含まれているかの判定をおこないます。検索文字が含まれている場合は数値を返すため、判定は型を含めた形でおこないます。

  • 文字列が含まれているかを判定:!==false
  • 文字列が含まれていないかを判定:===false

strpos関数以外にも文字列が含まれているかを判定する関数はありますが、strpos関数が一番高速でメモリ消費も少ない為、この判定方法を使います。

3番目の引数を使うと、検索開始位置を指定できます。何バイト目以降に検索文字があるかという判定をおこなうことができます。ちなみに開始位置は最初の文字が0です。

if(strpos($str,'abc',2) !== false){
  //3バイト目以降に'abc'が含まれている場合
}

バイト単位ではなく文字単位で検索したい場合は、mb_strpos関数を使います。

if(mb_strpos($str,'あいうえお',2) !== false){
  //3文字目以降に'あいうえお'が含まれている場合
}