我有一个数据库中不良单词的列表。每当用户提交意见,功能经过的不好的话整个列表,并与*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