-3

I want to censor words from a form string, and control the censor words with sql database. Here's what I have so far:

while ($bad_w = mysql_fetch_array($result_badw)) {
    $newmessage = str_replace($bad_w['word'],"****",$org);
}

Any ideas on how to correct it?

4

2 回答 2

2

您在替换中重复使用原始字符串。您应该覆盖字符串
( $org = str_replace($bad_w['word'],"****",$org)) 以确保过滤所有单词。

只是希望没有人在你的论坛上谈论黑执事:p

于 2013-08-03T09:16:53.150 回答
0

$newmessage每次替换新单词时都会覆盖。

您还应该使用str_ireplace()不区分大小写的 ,这将更适合审查。

试试这样:

$newmessage = $org;

while($row = mysql_fetch_array($result_badw)) {
    $newmessage = str_ireplace($row['word'], "****", $newmessage);
}

或者,如果您想要与*坏词中的字母数量相同:

$newmessage = $org;

while($row = mysql_fetch_array($result_badw)) {
    $bword = $row['word'];
    $repl = str_repeat('*', strlen($bword));

    $newmessage = str_ireplace($bword, $repl, $newmessage);
}
于 2013-08-03T09:16:27.213 回答