strpos()
その目的で関数を使用することもできます。strrpos()
文字列内の部分文字列 (または少なくとも文字) を検索するように、部分文字列が見つからない場合はその部分文字列の最初の位置またはブール値 (false)を返します。したがって、スニペットは次のようになります。
$position = strpos('I am @ the penthouse', '@');
if($position === FALSE) {
echo 'The @ was not found';
} else {
echo 'The @ was found at position ' . $position;
}
php.ini にはよくある落とし穴があることに注意strpos()
してくださいstrrpos()
。
1. 戻り値の型をチェック!
次の例を想像してください。
if(!strpos('@stackoverflow', '@')) {
echo 'the string contains no @';
}
文字列に「@」が含まれていますが、「@」が見つからなかったと出力されます。これは、PHP のデータ型付けが弱いためです。前の strpos() 呼び出しは、文字列の最初の文字であるため、int(0) を返します。ただし、「===」演算子を使用して厳密な型チェックを実施しない限り、この int(0) は FALSE として処理されます。これは正しい方法です:
if(strpos('@stackoverflow', '@') === FALSE) {
echo 'the string contains no @';
}
2. 引数の正しい順序を使用してください!
strpos の署名は次のとおりです。
strpos($haystack, $needle [, $start]);
これは、$ needleが最初の引数である PHP の他の str* 関数とは異なります。
これを覚えておいてください!;)