PHPで文字列や配列が特定の文字列を含むか検索する方法【現役エンジニアが解説】

PROGRAM

今回は、PHPで文字列や配列が特定の文字列を含むか検索する方法について、文字列と配列の場合に分け、簡単に解説していきます。

文字列が特定の文字列を含むか検索する方法

PHPで文字列が特定の文字列を含むか検索するには、標準関数のstrpos関数を使うと良いでしょう。

この関数では、第一引数の文字列中にある第二引数の文字列の位置を返すため、結果的に特定の文字列を含むかの検索が可能です。

$str = "あいうえお";
if(strpos($str,'あいう') !== false){
    echo "ヒット";
}

上記のコードでは、strpos関数を使って、$strの文字列の中に、”あいう”という文字列が含まれるかを検索し、含まれる場合”ヒット”という文字列を出力しています。

配列が特定の文字列を含むか検索する方法

PHPで配列が特定の文字列を含むか検索するには、標準関数のin_array関数を使うと良いでしょう。

この関数では、第二引数の配列に、第一引数で指定する文字列が含まれるかをtrueかfalseで返します。

$arr = array("あいうえお","かきくけこ","さしすせそ");
if(in_array("あいうえお",$arr)){
    echo "ヒット";
}

上記のコードでは、in_array関数を使って、$arrの配列の中に、”あいうえお”という文字列が含まれるかを検索し、含まれる場合”ヒット”という文字列を出力しています。

多次元配列で値を検索する方法

PHPでデータベースのような多次元配列の特定のカラムに特定の文字列が含まれるか検索したい場合もあると思います。

この場合は、まず、array_column関数という標準関数で第一引数の多次元配列から第二引数のカラムだけの配列を抽出し、in_array関数でその配列に特定の文字列が含まれるかを検索します。

$students = array(
    array(
        "name"=>"山田",
        "age"=>20,
        "gender"=>"男性",
    ),
    array(
        "name"=>"田中",
        "age"=>21,
        "gender"=>"女性",
    ),
    array(
        "name"=>"髙橋",
        "age"=>19,
        "gender"=>"男性",
    )
);
$names = array_column($students, 'name');
if(in_array('山田', $names)){
    echo "ヒット";
}

上記のコードでは、nameとage、genderのカラムを持つ$studentsという多次元配列に、nameのカラムの値が”山田”のレコードが含まれるかを検索し、含まれる場合”ヒット”という文字列を出力しています。