Мне нужно реализовать небольшую поисковую систему. Проблема в том, что в базе данных есть данные, которые используются вместо букв, таких как буквы ae oe ue. Мне нужна возможность их найти. Я могу сделать это легко с моей функции регулярных выражений-генератора:mysql LIKE и regex 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, я не могу найти их, войдя в «Рене». С другой стороны, если я использую> LIKE $ string <, он находит «René» при входе в «Rene», но использование регулярного выражения там невозможно.
Я гугл в течение нескольких часов, и я также нашел несколько похожих тем здесь. Но до сих пор не было реального решения.
Я считаю, что я мог бы SELECT полей и применять REEX REPLACE на нем как REPLACE (поле, [^ a-z], '_') (недействительный код) и использовать LIKE.
У кого-нибудь есть ключ?
Интересное имя метода. –
рад, что вам понравилось 3 :) – Bernhard
Какая у вас версия mysql? –