微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP如何测试字符串的值是否存在部分在字符串中?

如何解决PHP如何测试字符串的值是否存在部分在字符串中?

| 必须简单但找不到我的答案。 如何测试字符串中是否包含数组中的值之一? 输出应为true或false。
$array = Array( 
   0 => \'word1\',1 => \'word2\',2 => \'New York\'
   3 => \'New car\' 
);

$string = \"Its a sunny day in New York\";
试图澄清。在这种情况下,array [3]不应该匹配。仅应使用array [2]。     

解决方法

        更新: 单词边界无关的解决方案是在输入字符串和搜索词之间添加空格:
$str = \' \' . $str . \' \';


function quote($a) {
    return \' \' . preg_quote($a,\'/\') . \' \';
}

$word_pattern = \'/\' . implode(\'|\',array_map(\'quote\',$array)) . \'/\';

if(preg_match($word_pattern,$str) > 0) {

}
或遍历以下条款:
foreach($array as $term) {
    if (strpos($str,\' \'. $term . \' \') !== false) {
        // word contained
    }
}
两者都可以放入简化使用的功能中,例如
function contains($needle,$haystack) {
    $haystack = \' \' . $haystack . \' \';
    foreach($needle as $term) {
       if(strpos($haystack,\' \' . $term . \' \') !== false) {
           return true;
       }
    }
    return false;
}
看看一个演示 旧答案: 您可以使用正则表达式:
function quote($a) {
    return preg_quote($a,\'/\');
}

$word_pattern = implode(\'|\',$array));

if(preg_match(\'/\\b\' . $word_pattern  . \'\\b/\',$str) > 0) {

}
重要的是此处的边界字符“ 5”。仅当您搜索的值是字符串中的一个(或多个)单词时,您才会获得匹配项。     ,        
in_array
的功能替代品为:
array_filter(
    array_map(\"strpos\",array_fill(0,count($words),$string),$words),\"is_int\")
    ,        蛮力方法是:
$words = implode(\'|\',$array);

if (preg_match(\"/($words)/\",$string,$matches)) {
    echo \"found $matches[1]\";
}
    ,        
$array = Array( 
   0 => \'word1\',1 => \'word2\',2 => \'word3\'
);

$string = \"there a good word3 here\";

foreach($array as $word)
{
    if(strstr($string,$word))
        echo \"<b>$word</b> has been detected in <b>$string</b>\";
}
    ,        您可以为此设置in_array函数: http://php.net/manual/zh/function.in-array.php
if (in_array($value,$array))
{
echo $value . \' is in the array!\';
}
    ,        
$array = Array( 
   0 => \'word1\',1 => \'word3\',2 => \'word3 basic\',3 => \'good\'
);

$string = \"there a good word3 basic here\";

//Convert the String to an array
$stringArray = explode(\' \',$string);

//Loop the string
foreach($stringArray as $matchedWords) {
    if(in_array($matchedWords,$array )) {
        echo $matchedWords.\'<br/>\';
    }
}
    ,        像这样吗
$array = Array( 
   0 => \'word1\',2 => \'word3\'
);

$string = \"there a good word3 here\";

function findInArray($string,$array) {
    for ($x=0; $x < count($array); $x++) {
        if (preg_match(\'/\\b\' . $array[$x] . \'\\b/\',$string)) { // The \\b in the pattern indicates a word boundary,so only the distinct 
            return true;
        }
    }
    return false;
}

if (findInArray($string,$array)) {
   // do stuff
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。