如何在Mysql字段中搜索字符串中的任何特殊字符?

时间:2017-03-07 13:16:47

标签: mysql regex

说我有搜索字符串'男士健康'在我的数据库中,我有一个有价值的领域'男人的健康',如何使用正则表达式匹配我的搜索字符串?请记住,这只是一个示例,在我的数据库中有许多记录也包含任意数量的非字母字符,例如" /,$,', - ,(,),1,2 ...&#34 ;?搜索字符串是从URL获取的,不应包含任何编码以便于阅读。

2 个答案:

答案 0 :(得分:0)

我最终创建了一个小函数,它生成一个正则表达式字符串,我在MySQL查询中使用RLIKE,它应该匹配字母数字字符序列,而不管字母之间是否有任何特殊字符。

function GenerateCategoryRegex($SrchTerm) {
    $arrChar = str_split(str_replace(' ', '', $SrchTerm));
    $RegEx = '(^|;)+[[:space:]]*';
    foreach($arrChar as $Char) {
        $RegEx .= $Char . '{1}[^\w,]*';
    }
    $RegEx .= '[[:space:]]*(;|$)+';

    return $RegEx;
}

答案 1 :(得分:0)

添加另一个包含“可搜索文本”的列,例如“男士健康”。然后搜索那个列,但显示原始列(“卑鄙的健康状况”)。

现在您可以自由地进行其他调整 - 例如在搜索列中添加同义词,常见拼写错误等。

您的$("#" + eval(YourNewVariableForID))可以变成一个简单的REGEXP,或者可能甚至快速 LIKE

相关问题