Роберт
Аналитик
preg_replace() и буква Ё
Можно ли для регулярных выражений добавлять глобальные правила по ну чтоли распознованию букв?
Вот если запускается с параметром /i - то "П" и "п" будут считаться эквивалентны. А можно как-то уговорить считать "Е" и "Ё" одинаковыми?
Простинькая задача - вытащить из базы данных всех Пётров и подсветить на экране...
Задаёшь select ... where FIO like '%Пётр%'
и MySQL выдаёт:
... Пётр ...
... Петр ...
... петр ...
... ПЁТР ...
А погда потом пытаюсь сделать подсветку по тому же критерию что и в SQL запросе - он конечно подсвечивает только половину.
Первое что приходит в голову - это перед выделяющим preg_replace() выполнить ещё одну команду
Но тут есть ещё особенность - база хранится в UTF-8 и в ней одновременно информация на многих языках... Для русского надо менять только "Ё" , для латышского 11 значений , а ещё немецкий и французкий... (информация ищится одновременно по всем возможным вариантам написания имени на всех языках).
Может кто-то предложит другие вариант?
Можно ли для регулярных выражений добавлять глобальные правила по ну чтоли распознованию букв?
Вот если запускается с параметром /i - то "П" и "п" будут считаться эквивалентны. А можно как-то уговорить считать "Е" и "Ё" одинаковыми?
Простинькая задача - вытащить из базы данных всех Пётров и подсветить на экране...
Задаёшь select ... where FIO like '%Пётр%'
и MySQL выдаёт:
... Пётр ...
... Петр ...
... петр ...
... ПЁТР ...
А погда потом пытаюсь сделать подсветку по тому же критерию что и в SQL запросе - он конечно подсвечивает только половину.
Первое что приходит в голову - это перед выделяющим preg_replace() выполнить ещё одну команду
PHP:
$СтрокаПоиска=preg_replace('/(ё|е)/i','(ё|е)',$СтрокаПоиска);
Может кто-то предложит другие вариант?