2010-09-09 93 views
1

我正在使用非常长的查询来检测我的用户用户名中令人讨厌的词。查找在哪里以及哪个词匹配sql LIKE语句

我已经做了一个版主页面,主持人可以点击检测到的用户名旁边的按钮,它将用*替换违规词。问题是我怎样才能轻松发现哪个冒犯性词语以及替换的地方?

我想我需要使用一些与LIKE语句完全相同的描述的正则表达式。帮助创建这样一个正则表达式将被极大地占用,或者......如果有人有更好的解决方案。

TIA

回答

2

喜欢的东西:

$bad_list = array('foo','barr','ax'); // list of bad words you want to * 

$from = array(); 
$to = array(); 

foreach($bad_list as $s){ 
    $from[] = '/'.preg_quote($s,'/').'/'; // PHP expects regex in delimiter. 
    $to[] = str_repeat('*',strlen($s)); 
} 
$str = "afoob"; 
$str = preg_replace($from,$to,$str); // $str is now a***b 

您也可以使用str_replace,也真的在这里没有必要正则表达式。

+0

Clbuttic例子。 – Wrikken 2010-09-09 15:34:03