我需要實現一個小搜索引擎。問題是,數據庫內部的數據使用的是字母而不是字母,例如字母和數字。我需要找到他們的可能性。我可以用我的正則表達式生成器功能很容易做到這一點:mysql LIKE和正則表達式VS RLIKE和變音符號
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 $字符串<。到現在爲止還挺好。
但是在數據庫中也有「Renés」。當我使用RLIKE時,我無法通過輸入「Rene」找到它們。另一方面,如果我使用> LIKE $字符串<,它會在輸入「Rene」時找到「René」,但在那裏不能使用正則表達式。
我搜索了幾個小時,現在我也發現了幾個類似的主題。但迄今爲止還沒有真正的解決方案。
我認爲我可以選擇字段並像REPLACE(field,[^ a-z],'_')(無效代碼)一樣對其應用REGEX REPLACE並使用LIKE。
有沒有人有線索?
有趣的方法名稱。 –
很高興你喜歡它3 :) – Bernhard
你的mysql版本是什麼? –