[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: preg_match_all и кодировка
dadli
хочу посчитат на каком месте стоит в строке кажди подчерkирование, для етого исползую preg_match_all(); но сталкивался с проблемои с кодировкои

если в строке латинские букви, то всо норм

preg_match_all("#_#u","d_o_c_",$arr,PREG_OFFSET_CAPTURE);


получаем: 1, 3, 5

а если руские букви:

preg_match_all("#_#u","д_о_к_",$arr,PREG_OFFSET_CAPTURE);


уже резултат такои 1, 5, 8
модификатор u, не помагает,

сушествует какоита способ исправит ето ?



Спустя 10 часов, 16 минут, 47 секунд (15.11.2011 - 11:40) Winston написал(а):
Дело в том, что в юникоде, русские символы занимают от 2 байт, потому тебе и показывает такие позиции... (Хм.. не думал, что в preg_match_all позиция в тексте считается по-байтово)
$str = iconv("UTF-8", "WINDOWS-1251", "д_о_к_");
preg_match_all("#_#", $str, $arr,PREG_OFFSET_CAPTURE);
echo '<pre>'.print_r($arr,1);


Свернутый текст
Array
(
[0] => Array
(
[0] => Array
(
[0] => _
[1] => 1
)

[1] => Array
(
[0] => _
[1] => 3
)

[2] => Array
(
[0] => _
[1] => 5
)

)

)

Спустя 18 минут, 23 секунды (15.11.2011 - 11:58) dadli написал(а):
спасибо Winston помагал smile.gif


_____________


когда чарли чаплин принимал участие в конкурсе: "клон чарли чаплинов", то чарли занимал третю позицию.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.