PHP 4 XML Parser functions AND PHP 5 XML Parser functions...

  • Автор темы Автор темы igor_ua
  • Дата начала Дата начала

igor_ua

Новичок
PHP 4 XML Parser functions AND PHP 5 XML Parser functions...

Подскажите пожалуйста почему происходит следующее:

Есть XML файл типа:
<?xml version="1.0" encoding="utf-8"?>
<press>

<story>
<id>37</id>
<tpl>template3.tpl</tpl>
<date>23-05-2005</date>
<headline>&lt;span style=&quot;font-weight: bold;&quot;&gt;Headline 1&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 51, 0);&quot;&gt;Some text&lt;/span&gt;&lt;br/&gt;</headline>
<text1>&lt;span style=&quot;font-weight: bold;&quot;&gt;S&lt;/span&gt;&lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;TORY TEXT *STORY TEXT *STORY TEXT *STORY TEXT *STORY TEXT *&lt;/span&gt;</text1>
<text2>123</text2>
<pic>false</pic>
</story>

</press>

если использовать XML Parser из PHP 4 то он преобразует HTML менмоники в соотв. символы, а PHP 5 просто уберает их.
В данном случае результат вывода PHP 5 будет (для тэга <headline>):

span style=font-weight: bold;Headline 1/spanspan style=color: rgb(153, 51, 0);Some text/spanbr/

А для PHP 4:

<span style="font-weight: bold;">Headline 1</span><span style="color: rgb(153, 51, 0);">Some text</span><br/>

В чем тут дело?

Спасибо.
 
IMHO
копать надо в сторону
http://bugs.php.net/bug.php?id=27908

php5 какой версии ?? может имеет смысл обновить ?
 
Смотрим настройки документа - есть вариант - что просто он ведёт себя правильно. Точно не помню, но кажись это не баг.
 
PHP:
<?php
$xml_str = '<?xml version="1.0" encoding="utf-8"?>
<press>
<story>
<id>37</id>
<tpl>template3.tpl</tpl>
<date>23-05-2005</date>
<headline>&lt;span style="font-weight: bold;"&gt;Headline 1&lt;/span&gt; &lt;span style="color: rgb(153, 51, 0);"&gt;Some text&lt;/span&gt;&lt;br/&gt;</headline>
<text1>&lt;span style="font-weight: bold;"&gt;S&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;TORY TEXT *STORY TEXT *STORY TEXT *STORY TEXT *STORY TEXT *&lt;/span&gt;</text1>
<text2>123</text2>
<pic>false</pic>
</story>
</press>';

$dom = new DOMDocument("1.0","UTF-8");
$dom->loadXML($xml_str);
echo $dom->saveHTML();
echo "</br></br>";
echo $dom->saveXML();
?>

Ничего не пропадает - версия php 5.0.2 - крутится на IIS
 
Ну я имел ввиду не эту библиотеку, а именно XML Parser functions, т.к. вот что пишут о DOM XML Functions:

Note: This extension has been moved to the PECL repository and is no longer bundled with PHP as of PHP 5.0.0.

Note: This extension is no longer marked experimental. It will, however, never be released with PHP 5, and will only be distributed with PHP 4. If you need DOM XML support with PHP 5 you can use the DOM extension. This domxml extension is not compatible with the DOM extension.

Спасибо.
 
Это старый Extension, сейчас уже есть новый которые на 100% соотвествует DOM w3c.
 
если файл БОЛЬШОЙ ! то нет смысла парсить его через DOM надо чтото делать с SAX парсером на xml_* ф-циях

если не очень болшой (до 100кб)
то проще всего переделать парсинг на simpleXML
см. http://php.net/manual/en/ref.simplexml.php
 
Файл-то не большой, даже маленький, и нужно что бы работал как в 4 так и в 5 ПХП, вот собственно вопрос возник, т.к. результат работы одной и тойже функции различный в 4 и 5 ПХП.

То что в 5 есть simpleXML, это понятно и мне очень даже нравится как это реализовали, но ведь в 4 этого нет :-(.
 
дык а что мешает
сделать в php4 через xml_*
а в php5 через simpleXML ???
http://php.net/manual/en/ref.simplexml.php
там в есть функция типа xml2array

ну будет кода больше, но проверять PHP_VERSION и инклудить соответсвующую либу проблем нет IMHO

но можно даже объектный враппер придумать при желании
 
:-) Да проблемы то нет, хотел узнать просто почему такие метаморфозы происходят.

Спасибо
 
честно говоря
хочешь узнать
напиши багрепорт

приведи code for reproduce
и exepted result
и real result
 
Сверху