Проблема в следующем: нужно было перевести сайт с ср1251 на utf. Были проделаны стандартные в таких случаях действия и при тестировании на локальной копии сайта все было хорошо, но после переноса на сервер... Регулярные выражения типа preg_match('#^[a-z0-9-]?$#i', $fas) или preg_replace('/[а-яА-Я]?$/i', $vfd) перестали работать. Причем проблема связана именно с использованием '[...]', а модификатор 'u' вообще вырубает выполнение с предупреждением "Compilation failed: this version of PCRE is not compiled with PCRE_UTF8 support at offset..." Как с этим бороться? Установить модули, скомпиленные с поддержкой utf? Или есть другие пути?
[upd]
Установка "правильных" модулей исправило ситуацию с латиницей, но с кириллицей проблемы остались(
Переменный размер символом в байтах очень неудобен при...06.12.12 14:18 Автор: leo <Леонид Юрьев> Статус: Elderman Отредактировано 06.12.12 14:19 Количество правок: 1
Переменный размер UTF-8 символов в байтах очень неудобен при реализации регулярок. Поэтому непосредственно в UTF-8 толком никакие регулярки не работают.
Стандартное решение = перед поиском регулярок все переводиться в UTF16/unicode. Проблемы с суррогатными парами при это все равно остаются, но решаются перекодированием в UTF-32.