我一直在谷歌和这个平台上寻找答案,但我无法使其发挥作用。所以这是我的情况:
我想要的是什么:
检查每个对象是否包含在数组中定义的字符串,并且仅输出通过此条件的对象。
我得到了什么:
$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倍。
答案 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>";