если в строке латинские букви, то всо норм
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 помагал
_____________
когда чарли чаплин принимал участие в конкурсе: "клон чарли чаплинов", то чарли занимал третю позицию.