preg_replace() и буква Ё

Роберт

Аналитик
preg_replace() и буква Ё

Можно ли для регулярных выражений добавлять глобальные правила по ну чтоли распознованию букв?
Вот если запускается с параметром /i - то "П" и "п" будут считаться эквивалентны. А можно как-то уговорить считать "Е" и "Ё" одинаковыми?

Простинькая задача - вытащить из базы данных всех Пётров и подсветить на экране...

Задаёшь select ... where FIO like '%Пётр%'
и MySQL выдаёт:
... Пётр ...
... Петр ...
... петр ...
... ПЁТР ...

А погда потом пытаюсь сделать подсветку по тому же критерию что и в SQL запросе - он конечно подсвечивает только половину.

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

SiMM

Новичок
> Но тут есть ещё особенность - база хранится в UTF-8 и в ней одновременно информация на многих языках... Для русского надо менять только "Ё" , для латышского 11 значений , а ещё немецкий и французкий... (информация ищится одновременно по всем возможным вариантам написания имени на всех языках).

Ну и сделаешь таблицу замен - не такая уж и большая сложность. И, кстати, preg_replace тут не нужен - скорее, [m]strtr[/m] типа ё => [ёе] и е => [ёе] и потом RLIKE.

-~{}~ 25.10.05 09:48:

Что-то я стормозил ;) Действительно, наверно делать
PHP:
preg_replace('/[ёе]/i','[ёе]',$findstr);
удобнее.
 
Сверху