如何在PHP数组中搜索单词?
我尝试in_array
,但它找到了完全相同的值。
<?php
$namesArray = array('Peter', 'Joe', 'Glenn', 'Cleveland');
if (in_array('Peter Parker', $namesArray)) {echo "There is.";}
else {echo "There is not.";}
我希望此实例返回true。我该怎么做?有什么功能吗?
答案 0 :(得分:3)
爆炸你的字符串,然后检查两个数组中是否有相同的字符串。
$namesArray = array('Peter', 'Joe', 'Glenn', 'Cleveland');
if (array_intersect(explode(' ', 'Peter Parker'), $namesArray))
echo "There is.";
else
echo "There is not.";
答案 1 :(得分:3)
您可以使用正则表达式 - preg_match('i'表示不区分大小写)来检查数组是否包含一些单词
例如:
$namesArray = array('Peter One', 'Other Peter', 'Glenn', 'Cleveland');
$check = false;
foreach($namesArray as $name)
{
if (preg_match("/.*peter.*/i", $name)) {
$check = true;
break;
}
}
if($check)
{
echo "There is.";
}
else {
echo "There is not.";
}
答案 2 :(得分:3)
我必须说我喜欢Gre_gor answer的简单性,但是对于更动态的方法,你也可以使用array_filter()
:
function my_array_search($array, $needle){
$matches = array_filter($array, function ($haystack) use ($needle){
// return stripos($needle, $haystack) !== false; make the function case insensitive
return strpos($needle, $haystack) !== false;
});
return empty($matches) ? false : $matches;
}
$namesArray = ['Peter', 'Glenn', 'Meg', 'Griffin'];
if(my_array_search($namesArray, 'Glenn Quagmire')){
echo 'There is'; // Glenn
} else {
echo 'There is not';
}
// optionally:
if(($retval = my_array_search($namesArray, 'Peter Griffin'))){
echo 'There is';
print_r($retval); // Peter, Griffin.
} else {
echo 'There is not';
}
现在$retval
是可选的,它捕获一系列匹配的主题。这是有效的,因为如果$matches
中的my_array_search
变量为空,则返回false而不是空数组。