-3

フォーム文字列から単語を検閲し、SQL データベースで検閲単語を制御したいと考えています。これが私がこれまでに持っているものです:

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

それを修正する方法についてのアイデアはありますか?

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 に答える