PCREの場合、globの場合とPHPのパターン検索方法を挙げましたが、単純に文字列中で特定文字列に完全一致する部分を探すのであれば、strpos関数やstrstr関数を使用すれば事足ります。
strpos関数は文字列中の検索文字列が最初に出現する場所のインデックスを返します。さらに一致する箇所が無い場合にFALSEを返すので、文字列中に検索文字列が存在するか/しないかを調べるPHPの関数も、実はstrposです。
<?php $string = "abcdefgh"; $search = "def"; if(($pos = strpos($string,$search)) === FALSE){ echo "検索文字列と一致する箇所は無い"; } else { echo ($pos + 1)."文字目から一致"; } ?> |
引数1が検索対象、引数2が探す文字列、オプションの引数3は探し始める位置です。比較演算子に===を使うのは、FALSE以外のときでも返り値で0を返す可能性があるからですね。なおこのstrposのヴァリエーションとして、大文字小文字の区別をしないstripos、最後に現れる位置を調べるstrrposなどがあります。
strstr関数は、検索文字列以降の文字列を返り値として得る際に使います。
strstr(引数1,引数2,引数3); 引数1,2はstrposに同じ。 引数3 検索文字列より前の部分を返すフラグ。オプション。 |
大文字小文字の区別をしないstristrというヴァリエーションもあります。
両方とも使いたいときには名前が出てこない影の薄い関数なので、メモっておきました。