雑多なブログ

音楽や語学、プログラム関連の話題について書いています

PHP: strposで文字の出現位置を取得する

strposを使うと、指定した文字の最初の出現位置を取得する事ができます。
下記の例は、文字列「abcdef」の中の「b」の位置を取得しています。

<?php
$haystack = 'abcdef';
var_dump(strpos($haystack, 'b'));

実行結果

int(1)

注意点

文字列の先頭1文字目に該当する場合、返り値は「0」を返します。
一方、指定した文字が文字列の中に存在しない場合には、falseを返します。

文字が見つからない場合に処理を分けたい場合、次のような記述はNGです。なぜかと言うと、下記のような記述をすると厳密な比較が行われないため、返り値が「0」の場合も「false」と同じ判定結果になってしまうからです。

NGの例

if (!strpos($haystack, $needle)) {
    // 何かの処理
}

ただしくは下記の通り厳密な比較を行う必要があります。

OKの例

if (strpos($haystack, $needle) === false) {
    //
}