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