Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770 Форумы портала PHP.SU :: Версия для печати :: Символьный класс
Работает и с кирилицей. Может не работать, только если, кодировка юникод и отсутствует модификатор u.
Возможно стоит проверить в какой кодировке поступает текст в регулярное выражение.
Okula если добавить модификатор u - ошибка. Кодировка 100% верная, иначе не находило бы и в нижнем регистре. Alek Добавить верхний регистр это можно, но не ясно зачем его добавлять и почему i работает не как ожидалось.
Мне кажется все проще.
По умолчанию ожидается нижний регистр [а-яё],
но если указан верхний [АЯ-Ё], то "умолчание" отсекается как не нужное.
Поэтому модификатор i уместным будет применять только при описании класса символов в нижнем регистре.
Хотя я не проверял наверняка, но судя из того что происходит, все может быть именно так.
Кроме того существуют различные версии PCRE,
которые могут по разному (с разным приоритетом) интерпретировать те или иные модификаторы.
Соответственно лучше написать [а-яёА-ЯЁ] и точно знать что проканает в любом случае.
Ну вот для cp1251 и не пашет, а для utf-8 вдруг бац и пашет...
Реализации то разные, и чармапы в исходниках к ним разные, и алгоритмы тоже разные.
А если еще вспомнить что винде плевать на регистр,
то появляется мысль что для cp1251 PCRE на регистр тоже плевать, точнее не работает он совсем... (Добавление)
Ну вот так и есть:
cp1251: