【问题标题】:Find where and which word matched sql LIKE statement查找与 sql LIKE 语句匹配的位置和单词
【发布时间】:2010-09-09 15:21:11
【问题描述】:

我正在使用一个很长的类似查询来检测我的用户用户名中的冒犯性词。

我创建了一个版主页面,版主可以在其中单击检测到的用户名旁边的按钮,它将用 * 替换有问题的单词。问题是我怎样才能轻松检测出哪个冒犯性的词以及在哪里替换?

我想我需要使用一些描述的正则表达式,它的功能与 LIKE 语句完全相同。帮助创建这样一个正则表达式将非常适合,或者......如果有人有更好的解决方案。

TIA

【问题讨论】:

    标签: php mysql regex string sql-like


    【解决方案1】:

    类似:

    $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,这里真的不需要正则表达式。

    【讨论】:

      【解决方案2】:

      您可以在php中尝试以下功能

      similar_text()
      levenshtein()
      soundex()
      

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

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

      【讨论】:

        猜你喜欢
        • 2016-10-07
        • 1970-01-01
        • 1970-01-01
        • 2021-06-23
        • 1970-01-01
        • 2011-09-11
        • 2022-06-10
        • 1970-01-01
        • 2017-05-25
        相关资源
        最近更新 更多