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 :: Версия для печати :: preg_replace Ñ
Форумы портала PHP.SU » » Кодировки и все смежное » preg_replace Ñ

Страниц (1): [1]
 

1. Tails - 19 Декабря, 2012 - 11:15:39 - перейти к сообщению
Мне нужно оставить в строке лишь определённые символы. Кодировка UTF-8. Использую функцию preg_replace и регулярное выражение. Функция удаляет символы, а вот оставшиеся каверкает.

В чём может быть проблема?


PHP:
скопировать код в буфер обмена
  1. $str    = 'шШщЩ \  ыв"№%4!';
  2. $str2   = preg_replace ("/[^a-zA-Zа-яА-Я0-9]/", "", $str);
  3.  
  4. header("Content-Type: text/html; charset=utf-8");
  5. echo("До: $str<br>После: $str2<br>");
  6. echo(intval('start1'));


Вывод в браузере:
Цитата:
До: шШщЩ \ ыв"№%4!
После: �Ш�Щ�в�4
2. Мелкий - 19 Декабря, 2012 - 11:22:40 - перейти к сообщению
"/[^a-zA-Zа-яА-Я0-9]/u"
3. Tails - 19 Декабря, 2012 - 11:51:43 - перейти к сообщению
Большое спасибо, а в чём была проблема?
4. Мелкий - 19 Декабря, 2012 - 11:54:21 - перейти к сообщению
При обработке юникода регуляркой, надо добавлять модификатор u - unicode.
По-умолчанию, обработка идёт без учёта многобайтовых кодировок.
5. Vinyl - 19 Декабря, 2012 - 12:00:12 - перейти к сообщению
Мелкий, спасибо. Полезная информация.

 

Powered by ExBB FM 1.0 RC1