preg_match и русские буквы

VLDM

Постоялец
Регистрация
15 Июн 2006
Сообщения
50
Реакции
11
пытаюсь для доски объявлений DLE Board прикрутить функцию запрет на стоп слова.
проблема в реакции preg_match на русские слова, т.е. когда preg_match находит совпадение с русскими словами он дополнительно добавляет какой то глюк и страница перезагружается не могу определить в чем причина, если использовать "en" буквы то все работает нормально без всяких глюков. В отдельном файле код работает с русскими буквами нормально.

Код:
setlocale(LC_ALL, 'ru_RU.CP1251');
 
//Входящие данные из формы
$title = "секс текст заголовка";
$text = "порно текст сообщения";
$fio = "интим текст имени";
 
$intext = array($title, $text, $fio);
 
//Список стоп слов
$sw_array = array('секс', 'порно', 'интим', 'sex');
 
 
foreach($sw_array as $value2) {
 
foreach($intext as $value1) {
 
if (preg_match ("/$value2/i", $value1)) {
 
$StopSpam = true;
 
}}}
 
if ($StopSpam === true) {
echo "обнаружены запрещенные слова";
}
 
В кодировке UTF-8 и с модификатором /u пробовал (это поддержка Unicode)?
Код:
preg_match ("/$value2/iu", $value1)
 
действительно проблема была в кодировке,
интересно то что при неправильной кодировке preg_match находил соответствие но выдавал непонятную ошибку, а по идее не должен был находить, почитал про то как криво работает preg_match и стало ясно что это его глюк, теперь необходимо подобрать надежный способ определения кодировки, нашел несколько готовых решений.
 
Назад
Сверху