この記事にはプロモーションが含まれています。

【PHP】特定の文字列が含まれているか簡単に判定する方法

【PHP】特定の文字列が含まれているか簡単に判定する方法

今回ご紹介するのは

PHPで特定の文字列が含まれているかを簡単に判定する方法

です。




ケケンタ

ケケンタのITブログでは、WebアプリPHPLaravel)やWeb制作WordPressコーディング)について情報を発信しています。
学習中の方や実務をされている方など多くの方にアクセスいただいていますので、ぜひほかの記事も参考にしてみてください!


運動不足、気になっていませんか?

もしプログラミング学習やお仕事で運動不足が気になっているなら
連続屈伸運動がおすすめです!

ボタンにカーソルを合わせるだけ
カウントダウンが始まるタイマーをご用意してみました!

ケケンタ

無理のない範囲で、ぜひ隙間時間に屈伸運動を取り入れてみて下さい!

タイマースタート

3:00

※運動不足だと連続3分で取り組んでもかなり息が切れます
(僕は加えて気分もちょっと悪くなりました……)
絶対にご無理の無い範囲でお取り組みください!


目次

【ソースコード】特定の文字列が含まれているか判定する

検索対象の文字列にマルチバイト(日本語など)を含む場合は「【補足】マルチバイト文字列でキーワードを検索する場合」をご覧ください。

以下のソースコード「対象の文字列」に「キーワード」が含まれているかどうかを判定することが可能です。

if( strpos('対象の文字列',(string)'キーワード' ) !== false ){
    // 文字列が含まれていた場合の処理
}

strpos()「対象の文字列」内に「キーワード」が何番目にあるかを調べる関数です。
※正確には「何バイト目」にあるかを調べてくれます。

  • 「キーワード」が見つかった場合……見つかった位置番号を返す
  • 「キーワード」が見つからなかった場合……falseを返す

注意点①

strpos()の返り値を判定する場合は、必ず「===」もしくは「!==」演算子を使用してください。
(※「==」や「!=」ではダメということ)

strpos()はfalseまたは数値を返す関数ですが、数値の中には「0」が含まれる場合があります。
「0」はfalseの意味も持つため、if文で評価するときは型まで確認しないと正しく判定できない可能性があります。

注意点②

「キーワード」は明示的に(string)’キーワード’のように文字列型にキャストしましょう。

PHP公式ドキュメントで推奨されているため(詳しくは【パラメータ】→【needle】の項目をご覧ください。)

【参考】strpos(PHP公式ドキュメント)

使用例

「キーワード」が含まれている場合

$val     = 'abcdefg';
$keyword = 'bc';

if( strpos( $val, (string) $keyword ) !== false ){
    // $keywordが含まれている場合の処理
}

キーワードが含まれていない場合

$val     = 'abcdefg';
$keyword = 'bc';

if( strpos( $val, (string) $keyword ) === false ){
    // $keywordが含まれていない場合の処理
}

注意しなくてはならないこととして、マルチバイト文字列を対象にキーワード検索する場合、strpos関数では正確な位置を取得できない可能性があるという点が挙げられてます。

前章でご紹介したstrpos関数は、あくまでもその文字列内でキーワードが「何文字目か」ではなく、「何バイト目」に出現するかを調べてくれる関数です。

以下の例をご覧ください。

具体例

$val     = '今日の朝食はパンだった';
$keyword = 'パン';

echo strpos( $val, $keyword ); // 出力結果:16
echo mb_strpos( $val, $keyword ); // 出力結果:6

このように、マルチバイト文字列を対象として検索した場合、mb_strpos()では正しい位置を返してくれるのに対し、

strpos()は欲しい検索位置を返してくれません。

(繰り返しになりますが、strpos()はあくまで「何バイト目に出現するか」を調べてくれる関数であるためです)

ケケンタ

検索対象の文字列で扱っているのがマルチバイトなのかどうかによって、適切な方を使用するようにしましょう!

【参考】mb_strpos(PHP公式ドキュメント)

まとめ

ケケンタ

以上がPHPで特定の文字列が含まれているかどうかを判定する方法でした!

strpos()関数を使用すれば簡単に文字列が含まれているかどうかを判定することが可能です。

注意点が2つあるため、実際にお使いいただく際はその点にお気を付けください。

注意点
  • strpos()の返り値を判定する場合は、必ず「===」もしくは「!==」演算子を使用する
  • 「キーワード」は明示的に(string)’キーワード’のように文字列型にキャストする

また、マルチバイト文字列を対象にキーワード検索する場合は、mb_strpos()を使用するようにしましょう。

それでは最後までご覧いただきありがとうございました!

無料でPHPが学べるプログミングスクール

PHPで特定の文字列が含まれているか簡単に判定する方法のアイキャッチ画像

この記事が気に入ったら
フォローしてね!

この記事が良いと思ったらシェアしてね!

コメント

コメントする

CAPTCHA


目次