Функция strpos()
ищет подстроку внутри строки и возвращает позицию подстроки, если она найдена. Вот почему ваш последний пример работает.
Если вы хотите, чтобы проверить, существует ли что-то в массиве, вы должны использовать функцию in_array()
, например, так:
$reactfulPages = array(
'url-one',
'url-two',
'url-three',
);
if (in_array($url, $reactfulPages) == true) {
echo "URL is inside list";
}
Однако, так как вы сравниваете URL, я предполагаю, что вы хотите проверить содержит ли URL-адрес одну из строк из массива, не обязательно сопоставляя их в целом. В этом случае вам нужно будет написать свою собственную функцию, которая могла бы выглядеть следующим образом:
function contains_any($string, $substrings) {
foreach ($substrings as $match) {
if (strpos($string, $match) >= 0) {
// A match has been found, return true
return true;
}
}
// No match has been found, return false
return false;
}
Вы можете применить эту функцию к вашему примеру:
$reactfulPages = array(
'url-one',
'url-two',
'url-three',
);
if (contains_any($url, $reactfulPages)) {
echo "URL is inside list";
}
Надеется, что это помогает.
... Что? Код работает, и это не значит, что? – Epodax
@James reactfulPages - массив, поэтому вы не можете использовать «strpos ($ url, $ reactfulPages)». Str pos использовать для поиска слова или символа в строке, а не в массиве. Для нахождения url существует в массиве, вы можете использовать метод in_array ($ value, $ array) –