Php 使用preg match返回true或false,而不是重复一个句子

Php 使用preg match返回true或false,而不是重复一个句子,php,regex,foreach,preg-match,Php,Regex,Foreach,Preg Match,我使用下面的方法来检查表单中的数据是否包含某些单词,但问题是,当它检查时,我一次又一次地得到“找到匹配项”或“未找到匹配项”。我怎样才能为发布的整个句子指定一个真值或假值?。然后我想添加这样的内容……如果为true,则转储此帖子,如果为false,则对其进行处理并将其放入数据库 <?php $message = $_POST['message']; echo $message; $targets = array('viagra', 'prescriptio

我使用下面的方法来检查表单中的数据是否包含某些单词,但问题是,当它检查时,我一次又一次地得到“找到匹配项”或“未找到匹配项”。我怎样才能为发布的整个句子指定一个真值或假值?。然后我想添加这样的内容……如果为true,则转储此帖子,如果为false,则对其进行处理并将其放入数据库

    <?php
    $message = $_POST['message'];
    echo $message;

    $targets = array('viagra', 'prescription', 'drugs', 'zyban', 'zithromax', 'voltaren', 'cilias', 'FDA');

    foreach($targets as $t)
    {
        if (preg_match("/\b" . $t . "\b/i", $message)) {
            echo "A match was found.";
        } else {
            echo "A match was not found.";
        }
    }

    ?>

如果我做对了,你需要像这样设置一个停止值

<?php
function containsSpam($message) {
    $targets = array('viagra', 'prescription', 'drugs', 'zyban', 'zithromax', 'voltaren', 'cilias', 'FDA');        
    $stop = false;
    foreach($targets as $t)
    {
        if (preg_match("/\b" . $t . "\b/i", $message)) {
            //A match was found.
            $stop = true;
            break;
        }
    }
    //And you can then do something like this
    if ($check) {
       //Insert it
    } else {
       //Dump it
    }
}
?>


preg\u match(“/\b”$t.\b/i“,$message)
它本身返回true或false。您应该添加一个
中断在找到停止字时停止循环谢谢,我正试图这样检查,但它一直返回true$结果=containsSpam($message);如果($result=true){echo'true';}否则{echo'false';}您应该使用
=
进行比较,并使用
=
进行赋值。在布尔值的情况下,
如果($result)
就足够了。
function containsSpam($message) {
    $targets = array('viagra', 'prescription', 'drugs', 'zyban', 'zithromax', 'voltaren', 'cilias', 'FDA');

    foreach($targets as $t)
    {
        if (preg_match("/\b" . $t . "\b/i", $message)) {
            //A match was found.
            return true;
        }
    }
    return false;
}