Регулярка и кириллица

Статус
В этой теме нельзя размещать новые ответы.

rasandrey

Участник
Регистрация
2 Апр 2009
Сообщения
214
Реакции
6
В общем проблема такая. Есть код

PHP:
$str = 'Абракадабра, и остальное... Abrakadabra' ;
$str = preg_replace("|[^\d\w ]+|i","-",$str);

Регуляркой заменияю все знаки препинания на "-", чтоб остались только слова. Все бы хороше, НО почему-то вырезает кирилицу, оставляет только латинские символы!

В чем может быть проблема? Или подскажите как еще можно заменить знаки?
 
В общем проблема такая. Есть код
PHP:
$str = 'Абракадабра, и остальное... Abrakadabra' ;
$str = preg_replace("|[^\d\w ]+|i","-",$str);
Регуляркой заменияю все знаки препинания на "-", чтоб остались только слова. Все бы хороше, НО почему-то вырезает кирилицу, оставляет только латинские символы!
В чем может быть проблема? Или подскажите как еще можно заменить знаки?
PHP:
$str = 'Абракадабра, и остальное... Abrakadabra' ;
$str = preg_replace("/[^\d\wа-яА-ЯёЁ]/iu","-",$str);
var_dump($str);//string(60) "Абракадабра--и-остальное----Abrakadabra"
 
Возможно так настроен сервер, я стараюсь не использовать спец символ \w, а пишу a-zа-я, так же всегда в синтаксисе выставляю /si
Буквами когда пишешь, во первых для глаз приятнее, во второых более точная работа на разных настройках.
 
Кодировка какая?

При траблах с кодировками юзай mbstring. А точнее mb_ereg_replace
 
PHP:
$str = 'Абракадабра, и остальное... Abrakadabra' ;
$str = preg_replace("/[^\d\wа-яА-ЯёЁ]/iu","-",$str);
var_dump($str);//string(60) "Абракадабра--и-остальное----Abrakadabra"

у меня сайт в cp1251, а это работает, как я понял, c UTF8 т.к. пишет ошибку

Код:
Warning: preg_replace() [function.preg-replace]: Compilation failed: invalid UTF-8 string at offset 7 in Z:\home\selects\www\s\index.php on line 5
NULL
 
Кодировка какая?
При траблах с кодировками юзай mbstring. А точнее mb_ereg_replace

Если быть точным, то ф-ция mb_ereg_replace и всё семейство ereg... начина с PHP 5.3 не рекомендуется. :))

Добавлено через 4 минуты
у меня сайт в cp1251, а это работает, как я понял, c UTF8 т.к. пишет ошибку
Код:
Warning: preg_replace() [function.preg-replace]: Compilation failed: invalid UTF-8 string at offset 7 in Z:\home\selects\www\s\index.php on line 5
NULL

попробуй поставить в начале файл:
PHP:
setlocale(LC_ALL, "russian","ru_RU.CP1251");
 
А кодировка файла случаем не UTF?
 
Если быть точным, то ф-ция mb_ereg_replace и всё семейство ereg... начина с PHP 5.3 не рекомендуется. :))
Добавлено через 4 минуты
попробуй поставить в начале файл:
PHP:
setlocale(LC_ALL, "russian","ru_RU.CP1251");
не помогло, такая же ошибка

Добавлено через 28 секунд
А кодировка файла случаем не UTF?
нет CP1251
 
Поставь UTF-8 чтобы кодировка была универсальной, чуть больше размер файл, но зато любой язык видишь)

Если будет кодировка файла utf8, а сайта в целом cp1251, то все равно отображаться будет криво. В htaccess я задаю кодировку вручную, это обязательно
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху