спецсимволы некорректно парсятся

niko111

Новичок
спецсимволы некорректно парсятся

Здравствуйте уважаемые форумчане.
Возникла такая проблема:
Еслив между тегами есть спецсимволы, например: & или ' то xml_set_character_data_handler вызывается несколько раз, как это победить не понятно.
например <name>bla1&apos; bla2bla2</name>
вызовется 3 раза и уменя получается что bla1 &apos; bla2bla2 заносятся в массив как 3 разные записи.
Подскажите пожалуйста как можно отконтролировать это и склеить.
сама функция по выбору данных между тегами:
PHP:
function stringElement($parser, $str) {
    global $list, $event_ar, $event_det;

if ($list[count($list)-1] == 'name')
{
  $event_det[] = $str;
}
}
Заранее большое спасибо за помощь!
 

slach

Новичок
>Еслив между тегами есть спецсимволы, например: & или ' то xml_set_character_data_handler вызывается несколько раз, как это победить не понятно.

никак это не победить, такое поведение SAX парсера вполне допускается стандартом
в твоем случае видимо надо слегка переделать код

чтото вроде
PHP:
function stringElement($parser, $str) { 
    global $list, $event_ar, $event_det; 
    global $event_det_cnt;

if ($list[count($list)-1] == 'name') 
{ 
//при этом в endElement handler'е надо счетчик изменять $event_det_cnt++; и делать это, если заканчикается таг name
  if (!isset($event_det[$event_det_cnt] )) {
    $event_det[$event_det_cnt] = $str;
  } else {
    $event_det[$event_det_cnt] .= $str; 
   }
} 
}
ну если не понял, то попробуй еще
http://php.net/manual/ru/book.xmlreader.php
 
Сверху