Итак в продолжении темы напишу немного про дружбу регулярок и русских букв в utf8.
Написал я
форум, сделал все красиво, в юникоде
Потом думаю - "какой же
форум без поиска?!" и прикрутил к нему поиск (тоже красивый - с подсветкой
). Играл с ним 3 дня и 3 ночи, нарадоваться не мог, пока случайно не создал топик на русском. И одолела меня злость на эти мультибайтовые кодировки, - русские буквы отказывались подсвечиваться (точнее подсвечивались, но регистрозависимо), и начал я гром и молнии метать по всему гуглу в поисках вакцины от неверных.
Первое что мне пришло в голову, - заглянуть на родной
php.net. Там я прочитал, что
mb_internal_encoding('UTF-8'); выставляется для текстовых функций. Надо сказать, что все обычные строковые функции я перезагрузил [по совету
vasa_c] с помощью строчки
php_value mbstring.func_overload "7" в .htaccess-е (Что значит 7-ка, можно прочитать
тут). Но как оказалось мало установить кодировку символов, нужно установить кодировку самих регулярных выражений с помощью
mb_regex_encoding('UTF-8');. Все бы хорошо, но вот отказывалась
eregi_replace() работать регистронезависимо. И с модификаторами и без - никак. Я уже подумывал на это дело забить, но что-то меня потянуло к гуглу опять. И нарыл я инфу, что PCRE и без всяких перезагрузок
работают с НЕлатиницей! Нужно всего-навсего добавить модификатор
u. Тоесть регулярка получится примерно такой -
Может кому пригодится сей рассказ
Надеюсь моя эпопея с русскими буквами на этом закончится