Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > "регулярка" некорректно работает с UTF-8


Автор: skyboy 23.9.2006, 19:45
относительно простое регулярное выражение(кодировка кирилицы, да и всего файла - UTF8):
Код

<?php
echo preg_replace("/^(.)([^\/]{0,})/","$1","Часть строки/50/50");
?>

с логикой "заменить всю строку до слеша первым её символом" возвращает вот такое вот(кодировка в браузере - UTF-8):
Код

Я50/50

Кто б мне обьяснил, почему так, если должно(я рассчитываю) быть так:
Код

Ч/50/50

Что я упустил?

Автор: vasac 24.9.2006, 12:10
http://ru.php.net/manual/ru/reference.pcre.pattern.modifiers.php упустил.

Автор: skyboy 24.9.2006, 14:14
большое спасибо, vasac! И правда, упустил smile 
Тем, кто насутпит на те же грабли, хочу дать предостережение: если в строке шаблона или строке-источнике будут некорректные с точки зрения кодировки utf-8 символы, то шаблон не совпадёт в любом случае(даже если этот символ не будет критическим для сравнения строки), причём никакого сообщения об ошибке/предупреждения я не дождался. Так что следите внимательно за строками!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)