繁体   English   中英

检查字符串是否包含数组中的任何单词

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM