找到与sql LIKE语句匹配的位置和哪个单词

时间:2010-09-09 15:21:12

标签: php mysql regex string sql-like

我正在使用一个非常长的查询来检测用户用户名中的冒犯性词语。

我已经建立了一个主持人页面,主持人可以点击检测到的用户名旁边的按钮,它会用*来替换有问题的单词。问题是如何轻松地检测哪个令人反感的词以及在哪里替换?

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

TIA

2 个答案:

答案 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()

您可以创建一个简单的脚本来匹配单词,然后根据需要替换这些单词。

检查文档 http://in2.php.net/manual/en/function.similar-text.php