PHP Tips

PHP strposを使用して文字列に特定の文字が含まれているか判定する方法

2015/10/15

if」と「strpos」を使用して文字列に特定の文字が含まれているか判定する方法です。

strpos」は特定の文字列が含まれていない場合にfalseを返しますので、下記のようにすると文字列が含まれている場合や含まれていない場合に処理を行うということができます。

含まれている場合に処理を行う

下記は、変数xに「いうえ」が含まれている場合に「含まれています」を表示する例です。

<?php
    $x = "あいうえお";
    if(strpos($x, "いうえ") !== false){
        echo "含まれています";
    }
?>

» 実行結果

変数xに「いうえ」が含まれているので、strpos($x, "いうえ")の結果はfalseではなく、数値が返ってきます。「!==」を使用して、falseでなければ処理を実行する、つまり特定の文字が含まれていれば実行する形になっています。
重要なのは厳密に判定するために「!==」を使用していることです。「!=」だと、strposの結果が0だった(0文字目から含まれている)場合にfalseと判定されるため、誤った結果となってしまいます。

下記は、「!=」を使用してしまい、誤った結果が返ってきてしまう例です。変数xには「あいう」がふくまれているのに「含まれています」が表示されません。

<?php
    $x = "あいうえお";
    if(strpos($x, "あいう") != false){
        echo "含まれています";
    }
?>

» 実行結果

含まれていない場合に処理を行う

下記は、変数xに「イウエ」が含まれていない場合に「含まれていません」を表示する例です。

<?php
    $x = "あいうえお";
    if(strpos($x, "イウエ") === false){
        echo "含まれていません";
    }
?>

» 実行結果

「含まれている場合」と同じく厳密に判定するために「===」を使用します。

両方の処理を行う

else を使用するだけですね。
関数にしてみます。

<?php
    function jud($x, $y){
        if(strpos($x, $y) !== false){
            echo "含まれています<br>";
        }else{
            echo "含まれていません<br>";
        }
    }
    
    $x = "あいうえお";
    $y = "いうえ";
    jud($x, $y);

    $x = "あいうえお";
    $y = "イウエ";
    jud($x, $y);
?>

» 実行結果

関数がよくわからなかった方は「関数の作り方」の記事をご覧ください。

最後に・・・

判定に使用するためであれば、日本語であっても「mb_strpos」を使用する必要はありません。strposで大丈夫です。日本語でも「含まれていない場合」にちゃんとfalseを返してくれますので。

-PHP, Tips