检查字符串中数组的子串

时间:2014-03-09 11:17:35

标签: php

如果它包含单词列表(数组)

,我想排除某些结果

例如:

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

像这样:

if (strpos($result,$discardKeys)==false) {
    echo $result;
}

3 个答案:

答案 0 :(得分:3)

您可以使用正则表达式:

$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)) {
  //..
}

答案 1 :(得分:0)

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

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;}

答案 2 :(得分:0)

这是使用str_replace来检查$ result结果的更短答案:

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

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