我正在使用一个非常长的查询来检测用户用户名中的冒犯性词语。
我已经建立了一个主持人页面,主持人可以点击检测到的用户名旁边的按钮,它会用*来替换有问题的单词。问题是如何轻松地检测哪个令人反感的词以及在哪里替换?
我想我需要使用一些与LIKE语句完全相同的描述的正则表达式。如果有人有更好的解决方案,那么创建这样一个正则表达式的帮助将被大大占用或者......如果有人有更好的解决方案。
TIA
答案 0 :(得分: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
,这里真的不需要正则表达式。
答案 1 :(得分:1)
您可以在php
中尝试以下功能similar_text()
levenshtein()
soundex()
您可以创建一个简单的脚本来匹配单词,然后根据需要替换这些单词。