我有一個數據庫中不良單詞的列表。每當用戶提交意見,功能經過的不好的話整個列表,並與*PHP匹配整個單詞
$query = "SELECT * FROM bad_words ORDER BY id ASC";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$word = $row['word'];
$replacement = "***";
$userInput = str_replace(" $word ", $replacement." ", $userInput);
}
替換每個字的問題是,str_replace函數不能正常工作。例如,「關聯」將成爲「*** ociated」。我也嘗試使用此preg_replace
$userInput = preg_replace("|\\b$\word\\b|i",$replacement,$userInput);
但它不工作出於某種原因。數據庫中的一些不良詞包含字符如 @ | , ! *) .^' (@
我的猜測是這些字符導致preg_replace失敗。有沒有辦法解決?
沒有第二個參數,'preg_quote'不會跳過定界符(在這種情況下爲'/')。 – eyelidlessness 2010-12-11 23:46:01
@eyelidlessness有趣而且不明顯。避免使用上面古怪的pcre環境。 – mario 2010-12-11 23:50:04