Симовл & при разборе XML

lunux

Новичок
Симовл & при разборе XML

При разборе XML файла типа:
PHP:
<item>
<url>[url]http://www.site.ru/go.php?id=19&g=10[/url]</url>
...
</item>
Встретился с проблемой использования символа & . По докам выискал что надо заменить на &amp; но терь при разборе формируется строка вида:
PHP:
http://www.site.ru/go.php?id=19<br>
&<br>
g=10<br>
Шо енто может быть и в чём ошибка?

Разборку делаю по стандартно:
PHP:
$p = xml_parser_create();
xml_set_element_handler($p, "tag_open", "tag_close");
xml_set_character_data_handler($p, "cdata");
....
в функции tag_open ищу тег URL через переменную даю добро на отображение, ну и в cdata вывожу, а в tag_close закрываю разрешение на отображение
 

Igor Ageyev

Guest
Юзай следующую конструкцию (без пробелов) -
& a m p ;
Работает даже при формировании GET запросов.
 

slach

Новичок
Игорь читай внимательно, он как раз и заменил символ на entity
 

Buteo

[CDR/DVP]
lunux
похожая проблема у меня:
http://phpclub.ru/talk/showthread.php?s=&threadid=55488

решил:
function characterData($parser, $data)
{
$this->data .= $data;
}

characterData(...) -- у тебя cdata (...)
а в tag_close делаю html_entity_decode($this->data)
т.е. я так понял, что находит символ амперсанда и снова вызывает функцию characterData
 

matross

Новичок
Re: Симовл & при разборе XML

Автор оригинала: lunux
При разборе XML файла типа:
PHP:
<item>
<url>[url]http://www.site.ru/go.php?id=19&g=10[/url]</url>
...
</item>
Встретился с проблемой использования символа & . По докам выискал что надо заменить на &amp; но терь при разборе формируется строка вида:
PHP:
http://www.site.ru/go.php?id=19<br>
&<br>
g=10<br>
Шо енто может быть и в чём ошибка?

Разборку делаю по стандартно:
PHP:
$p = xml_parser_create();
xml_set_element_handler($p, "tag_open", "tag_close");
xml_set_character_data_handler($p, "cdata");
....
в функции tag_open ищу тег URL через переменную даю добро на отображение, ну и в cdata вывожу, а в tag_close закрываю разрешение на отображение
Смотри сюда. BTW знаешь что такое Pear?
 
Сверху