PHP:检查对象是否包含数组中的字符串

时间:2014-11-25 09:33:30

标签: php arrays object

我一直在谷歌和这个平台上寻找答案,但我无法使其发挥作用。所以这是我的情况:

我想要的是什么:

检查每个对象是否包含在数组中定义的字符串,并且仅输出通过此条件的对象。

我得到了什么:

$mail_body = "<table>.....</table>";
$blacklist = array("PCabc", "PCxyz");

foreach($blacklist as $blacklists){
              if (strpos($mail_body, $blacklists) !== false){


                echo "<br>".$mail_body."<br>";
              }
}

原来。此代码实际上是一个工作白名单。^^

但我希望相反,但如果我将!== false更改为== false,它只会为数组中的每个字符串输出一个对象。因此,如果我在$blacklist中得到5个项目,它将为每个对象输出相同的5倍。

2 个答案:

答案 0 :(得分:2)

您需要将echo排除在循环之外。例如:

$mail_body = "<table>.....</table>";
$blacklist = array("PCabc", "PCxyz");
$output = true;

foreach($blacklist as $blacklists){
    if (strpos($mail_body, $blacklists) !== false){
        $output = false;
        break;
    }
}

if ($output) {
    echo "<br>".$mail_body."<br>";
}

答案 1 :(得分:2)

一个小的解决方法,来自foreach LOOP,并设置了一个存在balacklisted单词的标志。之后基于isBlackListed的值,继续

$mail_body = "<table>.....</table>";
$blacklist = array("PCabc", "PCxyz");

$isBlackListed = false;  //initialize to false

foreach($blacklist as $blacklists){
         if (strpos($mail_body, $blacklists) !== false){
              $isBlackListed = true;  
              //on encounter of blacklisted word , set this to true
        }
}

// proceed based on $isBlacklisted value

if( !$isBlackListed)
    echo "<br>".$mail_body."<br>";