167 символов для строки

Cron

Новичок
167 символов для строки

Нашел похожую тему - но не понял, как решить мою проблему.

Парсится XML. Проблема появляется в элементе комменария:
<comment>Здесь строка с допустимой длиной до 200 символов</comment>

Если строка комментария превышает длину 167 символов - то результатом парсинга является строка, начиная с 167 символа. Если короче - все ок.

Парсер такой:

PHP:
$parser = xml_parser_create();
xml_set_element_handler($parser,'saxStartElement','saxEndElement');
xml_set_character_data_handler($parser,'saxCharacterData');
и т.д. Вот функция CharacterData

PHP:
function saxCharacterData($parser,$data){
global $currentNews,$index, $head;

if ($index=='import_mode' || $index=='user'):
  $head[$index]=$data;
endif;

if ((is_array($currentNews)) && ($index)):
  $currentNews[$index] = $data;
endif;
return;
}####
Как же мне в итоге получать весь комментарий? Заранее спасибо.

-~{}~ 06.08.08 00:00:

В общем разобрался сам. Вроде работает. Может кому пригодится.

PHP:
function saxCharacterData($parser,$data){ 
global $currentNews,$index, $head, $buf; 

if ($index=='import_mode' || $index=='user'): 
  $head[$index]=$data; 
endif; 

if ($index=="comment"):
  $buf.=$data;
  $currentNews[$index]=$buf;
return;
endif;
$buf="";

if ((is_array($currentNews)) && ($index)): 
  $currentNews[$index] = $data; 
endif; 
return; 
}####
$buf - глобальная.
 

slach

Новичок
проблема классическая =)
CDATA событие срабатывает НЕСКОЛЬКО раз внутри тега
 

Cron

Новичок
Да... И если в строке встречаются некоторые символы, такие как амперсанд (&amp;) - также происходит разрыв строки. Почему - хз.
 

iSlayter

Новичок
,kz, что в ини проблемы с амперсандом, что в иксэмэле! боже, как хорошо, что я не додумался ещё перевести конфиг здоровенного приложения на xml чтобы столкнуться с этимиже проблемами....

"На своих ошибках учатся, а на чужих - делают карьеру." (с)

Спасибо :)
 

slach

Новичок
iSlayter
ну если ты конфиг собирался через SAX мрдель парсить
то действительно ХОРОШО что не перенес =))
 
Сверху