регулянные выражения utf-8 или я не понимаю или глюк

texrdcom

Новичок
регулянные выражения utf-8 или я не понимаю или глюк

PHP:
/*mb_regex_encoding('UTF-8');
ini_set('mbstring.internal_encoding', 'UTF-8'); */
setlocale(LC_ALL, 'ru_RU.utf-8');
$stroka='Проба';
preg_match('~(\w+)~isu', $stroka, $result);
print_r($result);
Локаль на хостинге указанная есть файл набран в utf-8
Все окей но результат пустой: array()
Пробовал по разному но метасимвол не срабатывает!
для примера срабатывает такая конструкция [а-яa-z]
Но хочеться чтобы срабатывал \w !
Точно такойже глюк и на windows.
Если набрать слово латиницей (proba) все окей,
И еще если набрать это дело в cp1251 и изменить:
PHP:
setlocale(LC_ALL, 'ru_RU.cp1251');
$stroka='Проба';
preg_match('~(\w+)~is', $stroka, $result);
print_r($result);
Вот так срабатывает!
Как заставить срабатывать также но с utf-8 ?
 

texrdcom

Новичок
хостинг linux = php 4.3.11
PCRE Library Version 4.5 01-December-2003
____________________________________________
windows
PHP Version 5.1.1
PCRE Library Version 6.2 01-Aug-2005
_____________________
Везде:
(PCRE (Perl Compatible Regular Expressions) Support enabled )

-~{}~ 18.01.06 14:50:

У кого есть возможность попробуйте у себя на хостингах или локале пример
PHP:
setlocale(LC_ALL, ''); // или подставьте локаль ru_RU.utf-8(Linux)
// или windows russian_Russia.65001
mb_regex_encoding('UTF-8'); 
ini_set('mbstring.internal_encoding', 'UTF-8'); 
$stroka='Проба'; 
preg_match('~(\w+)~isu', $stroka, $result); 
print_r($result);
 

tony2001

TeaM PHPClub
Код:
LOCALE SUPPORT

       PCRE  handles  caseless matching, and determines whether characters are
       letters digits, or whatever, by reference to a set of  tables,  indexed
       by  character  value.  When running in UTF-8 mode, this applies only to
       characters with codes less than 128. Higher-valued  codes  never  match
       escapes  such  as  \w or \d, but can be tested with \p if PCRE is built
       with Unicode character property support.
http://pcre.org/pcre.txt
 
Сверху