考慮する:
$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!
PHP 8以前
あなたはstrpos()
ある文字列が別の文字列内に出現する箇所を見つけるために使用される関数:
$haystack = 'How are you?';
$needle = 'are';
if (strpos($haystack, $needle) !== false) {
echo 'true';
}
の使用は!== false
意図的であることに注意してください ( も も!= false
目的=== true
の結果を返しません)。strpos()
は、haystack 文字列内での Needle 文字列の開始オフセット、またはfalse
Needle が見つからない場合はブール値を返します。 0 は有効なオフセットであり、 は「偽」であるため、 のようなより単純な構造は使用できません!strpos($a, 'are')
。