Ashotovich
Новичок
setlocale - "опять двойка"
Всем доброго времени суток. У меня на хостинге установлены следующие русские локали:
ru_RU
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.koi8u
ru_UA.utf8
Мне нужно, чтобы PHP нормально воспринимал русские символы для обработки массива $_POST в гегулярном выражении на предмет наличия в нем запрещенных символов (для preg_match используется \w, то есть - все буквы).
Ну так вот, если я вообще не ставлю в скриптах setlocale(), то PHP не воспринимает букву "ч" за нормальную русскую букву, если же я ставлю setlocale(LC_ALL, "russian") или setlocale(LC_ALL, "ru_RU"), то перестают восприниматься буквы "р" и "э".
Как мне быть? Сразу скажу, что тиранить провайдерских админов на предмет установки локали ru_CP1251 - сизифов труд (хотя, если это - единственный разумный выход, то я там таки устрою бучу).
Может, как-то по-другому регулярное выражение построить (сейчас оно выглядить так: preg_match("/[^\w@+.,&№ \/\":-]/", join($_POST)))?
Заранее спасибо за помощь.
Всем доброго времени суток. У меня на хостинге установлены следующие русские локали:
ru_RU
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.koi8u
ru_UA.utf8
Мне нужно, чтобы PHP нормально воспринимал русские символы для обработки массива $_POST в гегулярном выражении на предмет наличия в нем запрещенных символов (для preg_match используется \w, то есть - все буквы).
Ну так вот, если я вообще не ставлю в скриптах setlocale(), то PHP не воспринимает букву "ч" за нормальную русскую букву, если же я ставлю setlocale(LC_ALL, "russian") или setlocale(LC_ALL, "ru_RU"), то перестают восприниматься буквы "р" и "э".
Как мне быть? Сразу скажу, что тиранить провайдерских админов на предмет установки локали ru_CP1251 - сизифов труд (хотя, если это - единственный разумный выход, то я там таки устрою бучу).
Может, как-то по-другому регулярное выражение построить (сейчас оно выглядить так: preg_match("/[^\w@+.,&№ \/\":-]/", join($_POST)))?
Заранее спасибо за помощь.