Php 检查字符串中数组的子字符串

Php 检查字符串中数组的子字符串,php,Php,如果某个结果包含单词列表(数组)中的某个单词,我希望排除该结果 例如: $result = 'http://www.facebook.com/plugins/likebox.php'; $discardKeys = array('chat', 'facebook', 'twitter'); 这样说: if (strpos($result,$discardKeys)==false) { echo $result; } 您可以使用正则表达式: $result = 'http://www.

如果某个结果包含单词列表(数组)中的某个单词,我希望排除该结果

例如:

$result = 'http://www.facebook.com/plugins/likebox.php';
$discardKeys = array('chat', 'facebook', 'twitter');
这样说:

if (strpos($result,$discardKeys)==false) {
    echo $result;
}
您可以使用正则表达式:

$result = 'http://www.facebook.com/plugins/likebox.php';
$discardKeys = array('chat', 'facebook', 'twitter');
$discardKeys = array_map('preg_quote', $discardKeys);

if (preg_match('/'.implode('|', $discardKeys).'/', $result, $matches)) {
  //..
}

顺便说一下,我发布了另一个更长的解决方案:

function istheRight($url, $discardKeys){
    foreach ($discardKeys as $key) {
        if (strpos($url, $key) == true) {return false;}
    }
    return true;
}
因此,在示例中:

$result = 'http://www.facebook.com/plugins/likebox.php';
$discardKeys = array('chat', 'facebook', 'twitter');

if (isTheRight($result, $discardKeys)) {echo $result;}

下面是使用str_replace检查is$result changes的简短答案:

$result = 'http://www.facebook.com/plugins/likebox.php';
$discardKeys = array('chat', 'facebook', 'twitter');

if ($result == str_replace($discardKeys, "", $result)) {echo $result;}

+1用于实际记住
preg\u quote
,但是您应该使用
()
作为正则表达式分隔符-否则您需要转义斜杠,这会使整个
preg\u quote
函数变得不整洁(您需要传递一个额外的参数)