文字列に特定の単語が含まれているかどうかを確認するにはどうすればよいですか? 質問する

文字列に特定の単語が含まれているかどうかを確認するにはどうすればよいですか? 質問する

考慮する:

$a = 'How are you?';

if ($a contains 'are')
    echo 'true';

上記のコードがあるとします。ステートメントを記述する正しい方法は何でしょうかif ($a contains 'are')?

ベストアンサー1

PHP 8では、次のようにしてこれを行うことができます。str_contains:

if (str_contains('How are you', 'are')) { 
    echo 'true';
}

注意: str_contains$needle (文字列内で検索する部分文字列) が空の場合、関数は常に true を返します。

$haystack = 'Hello';
$needle   = '';

if (str_contains($haystack, $needle)) {
    echo "This returned true!";
}

まず、$needle (サブ文字列) が空でないことを確認する必要があります。

$haystack = 'How are you?';
$needle   = '';

if ($needle !== '' && str_contains($haystack, $needle)) {
    echo "This returned true!";
} else {
    echo "This returned false!";
}

出力:This returned false!

また、新しいstr_contains関数では大文字と小文字が区別されることにも注意してください。

$haystack = 'How are you?';
$needle   = 'how';

if ($needle !== '' && str_contains($haystack, $needle)) {
    echo "This returned true!";
} else {
    echo "This returned false!";
}

出力:This returned false!

RFC

PHP 8以前

あなたはstrpos()ある文字列が別の文字列内に出現する箇所を見つけるために使用される関数:

$haystack = 'How are you?';
$needle   = 'are';

if (strpos($haystack, $needle) !== false) {
    echo 'true';
}

の使用は!== false意図的であることに注意してください ( も も!= false目的=== trueの結果を返しません)。strpos()は、haystack 文字列内での Needle 文字列の開始オフセット、またはfalseNeedle が見つからない場合はブール値を返します。 0 は有効なオフセットであり、 は「偽」であるため、 のようなより単純な構造は使用できません!strpos($a, 'are')

おすすめ記事