PHPプログラミング

最終更新日:
公開日:

レシピ

文字列

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

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

この記事のポイント

  • mb_strpos関数を使って探している文字列が何文字目から使われているかを調べることができる
  • mb_strpos関数は探している文字列の開始位置を整数型(Integer)で返す

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

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

PHP コード例

mb_strpos( $str, "cat");

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

PHP コード例

$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関数はマルチバイトに対応しているため、日本語の文字列に対しても同様に使うことができます。

PHP コード例

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

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

var_dump($str2);

出力例

int(5)

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

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

PHP コード例

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

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

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

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

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

PHP コード例

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

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

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

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

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

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