我需要实现一个小的搜索引擎。问题是,数据库中的某些数据使用字母 ae oe ue 而不是字母 ä ö ü。我需要找到他们的机会。我可以使用我的 regex-generator 函数轻松地做到这一点:
function shittyumlauts($string){
$string = mb_strtolower($string);
$string = preg_replace('/(Ä|ä|ae)/i', '(ä|ae)', $string);
$string = preg_replace('/(Ö|ö|oe)/i', '(ö|oe)', $string);
$string = preg_replace('/(Ü|ü|ue)/i', '(ü|ue)', $string);
return $string;
}
我用 >RLIKE $string< 把它放在查询中。到目前为止,一切都很好。
但是数据库中也有“Renés”。当我使用 RLIKE 时,我无法通过输入“Rene”找到它们。另一方面,如果我使用 >LIKE $string<,它会在输入“Rene”时找到“René”,但在那里无法使用正则表达式。
我现在用谷歌搜索了几个小时,我也在这里找到了一些类似的主题。但到目前为止还没有真正的解决方案。
我考虑的是我可以选择字段并在其上应用正则表达式替换,如 REPLACE(field, [^az], '_') (无效代码)并使用 LIKE。
有人有线索吗?