PHPでは、 StripoS()は、別の文字列に文字列の最初の発生を無感覚に見つけるための非常に一般的な機能です。見つかった場合、 StripOS()は、ターゲット文字列の一致する文字列の開始位置を示す整数を返します。見つからない場合、 Falseが返されます。
ここに問題が発生します。返品は「 0またはfalse 」であるため、条件付き判断で簡単にエラーを犯すことができます。
共通の落とし穴を与えましょう:
if (stripos($haystack, $needle)) {
echo "見つかった!";
} else {
echo "見つかりません!";
}
$針が$ haystack (位置0)の先頭にある場合、 spripos()が0を返し、 (0)がfalsとして扱われ、「見つかりません」出力、論理エラーになります!
Stripos()がFalseを返す状況を優雅に処理するには、単純なブールの判断ではなく、それが偽であるかどうかを明確に判断する必要があります。
$pos = stripos($haystack, $needle);
if ($pos !== false) {
echo "見つかった,場所に:$pos";
} else {
echo "見つかりません!";
}
合同比較シンボル!==を使用することにより、 0とfalseを正確に区別できます。
コードをより明確に再利用可能にするために、ヘルパー関数をカプセル化できます。
function containsIgnoreCase($haystack, $needle) {
return stripos($haystack, $needle) !== false;
}
// 使用の例
if (containsIgnoreCase("https://m66.net/news", "NEWS")) {
echo "キーワードを含めます!";
} else {
echo "不キーワードを含めます!";
}
このようにして、コードを書くことは読みやすく、繰り返しのロジックを減らすことができ、プロジェクトでの広範な使用に非常に適しています。
ユーザーアクセスのURLにutm_sourceが含まれているかどうかを判断する必要があるとします。