我正在尝试使用以下代码来检查当前URL是否在数组中。
$reactfulPages = array(
'url-one',
'url-two',
'url-three',
);
if (strpos($url, $reactfulPages) == true) {
echo "URL is inside list";
}
我认为我设置数组的方式不正确,因为以下代码(检查一个URL)工作正常..
if (strpos($url,'url-one') == true) { // Check if URL contains "landing-page"
}
任何人都可以帮助我吗?
答案 0 :(得分:7)
阵列很好,要检查的功能不正确。 strpos()
函数用于检查字符串位置。
检查数组中是否有内容的正确方法可以使用in_array()
函数。
<?php
$reactfulPages = array(
'url-one',
'url-two',
'url-three',
);
if(in_array($url, $reactfulPages)) {
echo "The URL is in the array!";
// Continue
}else{
echo "The URL doesn't exists in the array.";
}
?>
我希望这对你有用。
答案 1 :(得分:1)
函数strpos()
在字符串中查找子字符串,如果找到则返回子字符串的位置。这就是你最后一个例子的原因。
如果要检查数组中是否存在某些内容,则应使用in_array()
函数,如下所示:
$reactfulPages = array(
'url-one',
'url-two',
'url-three',
);
if (in_array($url, $reactfulPages) == true) {
echo "URL is inside list";
}
但是,由于您要对网址进行比较,我假设您要检查网址是否包含数组中的某个字符串,而不一定要将它们作为一个整体进行匹配。 在这种情况下,您需要编写自己的函数,如下所示:
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";
}
希望这有帮助。