PHPプログラミング

レシピ

文字列

特定の文字列が含まれているか確認する

mb_strpos関数を使って、特定の文字列が登場する位置を取得して含まれるかを確認します。

この記事のポイント

  • 探している文字が何文字目から登場するかを調べることができる
  • 検索結果を確認するときに返り値の「型」に注意する

任意の文字コードに変換する

mb_strpos関数は、指定した文字列が最初に登場する位置を取得することができます。

コード例

mb_strpos( $str, "cat");

上記のコードでは、$strに格納されている文字列から、「cat」を検索します。
もし見つかったら、最初に登場する位置を整数で返し、見つからなかった場合は「false」を返します。

コード例

$str1 = "cat is cat. cat play a trick. but so pretty";
$str2 = null;

// 文字の検索
$str2 = mb_strpos( $str1, "play");

var_dump($str2);

出力例

int(16)

こちらのコードの場合は、$str1に入っている文字列から「play」を検索します。
出力される「16」は16番目に登場することを表しています。
先頭が「0」から始まる点に注意してください。

mb_strpos関数はマルチバイトに対応しているため、日本語の文字列に対しても同様に使うことができます。

コード例

$str1 = "猫はとても可愛いが、時々いたずらをする。";
$str2 = null;

// 文字の検索
$str2 = mb_strpos( $str1, "可愛い");

var_dump($str2);

出力例

int(5)

可愛い」という文字列が5文字目から登場することが分かります。

先ほど文字列の先頭が「0」から始まると書きましたが、検索結果をif文などの条件式で確認する際にも注意が必要です。

コード例

$str1 = "猫はとても可愛いが、時々いたずらをする。";
$str2 = null;

// 文字の検索
$str2 = mb_strpos( $str1, "猫");

if( $str2 == false ) {
	echo '探している文字が見つかりませんでした。';
} else {
	echo $str2 . '文字目に見つかりました。';
}

上記コードの場合、先頭に探している「猫」という文字が入っていますが「探している文字が見つかりませんでした。」と出力されてしまいます。

原因は条件式で「==」を使っていることで、整数の「0」は「false」として扱うためです。
そこで、型まで含めて確認する「===」を使うことで解決することができます。

コード例

$str1 = "猫はとても可愛いが、時々いたずらをする。";
$str2 = null;

// 文字の検索
$str2 = mb_strpos( $str1, "猫");

if( $str2 === false ) {
	echo '探している文字が見つかりませんでした。';
} else {
	echo $str2 . '文字目に見つかりました。';
}

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。