文字列の複数の値をチェックするために使用できる関数を構築しようとしています。値を配列に分割し、配列をループして、for each ループを使用して文字列に対して値をチェックしようとしましたが、期待される結果が得られません。以下の関数、いくつかの例、および期待される結果を参照してください。
関数
function find($haystack, $needle) {
$needle = strtolower($needle);
$needles = array_map('trim', explode(",", $needle));
foreach ($needles as $needle) {
if (strpos($haystack, $needle) !== false) {
return true;
}
}
return false;
}
例 1
$type = 'dynamic'; // on a dynamic page, could be static, general, section, home on other pages depending on page and section
if (find($type, 'static, dynamic')) {
// do something
} else {
// do something
}
結果
これは、$type に static または dynamic が含まれているかどうかの条件をキャッチし、ページに応じて同じコードを実行する必要があります。
例 2
$section = 'products labels'; // could contain various strings generated by site depending on page and section
if (find($section, 'products')) {
// do something
} elseif (find($section, 'news')) {
// do something
} else {
// do something
}
結果
これは、ニュース セクション内のページの製品セクション 'ニュース' 内のページで $section に 'products' が含まれている場合に特に条件をキャッチする必要があります。
--
目的の結果を返すのに信頼性がないようで、その理由がわかりません! どんな助けでも大歓迎です!