我得到了一个输出用户评论的while loop
。如果它包含任何单词,我需要过滤评论filter_table
查询注释
$cm_qr = $db -> prepare ("SELECT comment FROM comment_tbl WHERE post_id = :pid");
$cm_qr -> bindParam (":pid", $pid);
$cm_qr -> execute();
while($row = $cm_qr -> fetch()){
$comment = $row_cm_qr['comment'];
}
查询筛选的字词
$check_filter = $db -> query ("SELECT filter_word FROM filter_tbl");
$check_filter -> execute();
while($filter_row = $check_filter -> fetch(PDO::FETCH_ASSOC)){
$fword = $filter_row['filter_word'];
}
$fwords = array($fword);
获取过滤器单词列表的方式是错误的。您不会从它们创建任何数组。
为此,您可以使用 PDO 提供的专用获取模式 PDO::FETCH_COLUMN
$fwords = $db->query("SELECT filter_word FROM filter_tbl")->fetchAll(PDO::FETCH_COLUMN);
这将为您提供一个带有单词的数组。
在过滤时,只需编写一个简单的循环(在您的 while 循环中),如下所示
foreach ($fwords as $word)
{
if (strpos($comment, $word) !== false)
{
continue 2; //skip that comment from processing
}
}