preg_replace и модификатор 'u'

Роберт

Аналитик
preg_replace и модификатор 'u'

Может кто-то сталкивался - действительно ли preg_replace() не коректно работает с UTF-8?

Если взять описание - то там написано , что якобы есть модификатор u (PCRE_UTF8) , при котором шаблоны обрабатываются как строки UTF8. Однако на практике ничего не получается. Даже при включенном модификаторе i - большие и маленькие буквы не распознаются. Если у меня UTF8 строка с текстом - "Привет" , то "привет" в ней найден не будет! А "ривет" найдётся без любых модификаторов - так как это точное совпадение...
Вот простой код:
PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?
$S=iconv('cp1251','UTF-8','Это похороны PHP!');
$mini=iconv('cp1251','UTF-8','Похороны');
echo preg_replace("/$mini/ui","<b>$mini</b>",$S);
?>
Пробывал и на UNIX машине с PHP 4.2.2 , и на Windows машине с РНР 5.0.4

Есть ли какая-то возможность заставить preg_* искать в UTF-8 тексте без учёта регистров? (только несоветуйте переводить в cp1251 , так как у меня текст на многих языках)
 

Profic

just Profic (PHP5 BetaTeam)
C:\>php
PHP:
<?
$S=iconv('cp1251','UTF-8','Это похороны PHP!');
$mini=iconv('cp1251','UTF-8','Похороны');
$res = preg_replace("/$mini/ui",'<b>\0</b>',$S);
echo iconv('UTF-8', 'CP1251', $res);
?>
^Z
Это <b>похороны</b> PHP!
C:\>php -v
PHP 5.0.6-dev (cli) (built: Oct 11 2005 02:25:10)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies
with Xdebug v2.0.0beta5-dev, Copyright (c) 2002, 2003, 2004, 2005, by Derick Rethans

C:\>
 

Роберт

Аналитик
Просто не знаю как выразить своё разочарование...
Обновил версию с 5.0.4 до 5.0.5 , и всё заработало!
Ну ладно , в Windows'e на обновление ушло несколько секунд , но в Linux'e я всегда пользовался только тем что идёт в комплекте с дистрибутивом... А там ещё не скоро войдёт 5.0.5
 

tony2001

TeaM PHPClub
>05 Sep 2005, PHP 5.0.5
>- Upgraded PCRE library to version 5.0. (Andrei)

всё написано в файле NEWS.
это проблемы PCRE, а не PHP - до PCRE 5.0 поддержка Unicode'а у них была достаточно условная.
 
Сверху