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


PHP: Check if objects contain a string from array

我一直在谷歌和这个平台上搜索寻找答案,但我无法让它工作。所以这是我的情况:

我想要什么:

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

我得到了什么:

$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 倍相同的内容。

你需要把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>";
}

一点解决方法,从 foreach LOOP 中出来,并为巴拉克列表单词的存在设置一个标志。之后根据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>";