[英]check a string contains any word from array
我有一组包含字符串和单词的预定义数组。我正在尝试检查我的字符串是否至少包含该数组中的一个单词。
$array = array("PHP code tester Sandbox Online","abcd","defg" );
$string = 'code testy';//code is already in that array
我尝试了很多方法,但没有正确的解决方案
first method
$i = count(array_intersect($array, explode(" ", preg_replace("/[^A-Za-z0-9' -]/", "", $string))));
echo ($i) ? "found ($i)" : "not found";
second method
if (stripos(json_encode($array),$string) !== false) { echo "found";}
else{ echo "not found";}
我想你正在寻找一个匹配的词。
$array = array("PHP code tester Sandbox Online","abcd","defg" );
$string = 'code|testy';
foreach ($array as $item ) {
if(preg_match("/\b{$string}\b/i", $item)) {
var_dump( $item );
}
}
您必须遍历数组并分别测试每个案例,首先是“代码”,然后是“testy”,或者您想要的任何内容。 如果你json_encode,即使你修剪两个字符串来做这个比较,也不会找到返回。
但是在第一个字符串中,如果你有这样的
$array = array("PHP code testy Sandbox Online","abcd","defg" );
$string = 'code testy';//code is already in that array
你肯定会得到一个“发现”作为回报。
if (stripos(trim(json_encode($array)),trim($string)) !== false) { echo "found";}
else{ echo "not found";}
您可以使用explode()
从字符串中获取一个数组,然后遍历它们中的每一个。
$array = array("PHP code tester Sandbox Online","abcd","defg" );
$string = 'code testy';
foreach(explode(' ', $string) as $key => $value) {
foreach($array as $arrKey => $arrVal) {
foreach(explode(' ', $arrVal) as $key => $str) {
if ($value == $str) {
echo $str . ' is in array';
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.