XML в переменной _POST не преобразуется в XML при использовании Simplexml_load_string в PHP - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть PHP-скрипт, который перехватывает переменную нашего партнера. В переменной есть строка XML. Когда они обрабатывают файл, он продолжает выдавать ошибки вроде этого:

Внимание: SimpleXMLElement :: __ construct (): Объект: строка 19: ошибка синтаксического анализатора: Преждевременное завершение данных в теге строка описания 19 в ... тогда перечисляет путь к скрипту.

Вот пример данных, которые передаются:

xml=<Posting>
<description><![CDATA[<p>this is a test posting.</p>

Here is some more of the test.]]></description>
</Posting>

Я настроил тестовый файл, который содержал текстовое поле с тем же кодом, как показано выше, и с именем xml. Когда я отправляю его, скрипт работает нормально и заканчивается так же, как и должен. Журнал партнера начинается как «необработанный HTTP-запрос POST». Не уверен, что это как-то по-другому, но чем больше деталей, тем лучше. Я пробовал это также на отдельных серверах, но все мои тесты работают, когда я отправляю данные, а не когда партнер отправляет их.

Вот как я собираю данные:

if ($_POST['xml']) {
    $xmlstr = stripslashes($_POST['xml']);
    $xml = simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA);
}

Ответы [ 2 ]

0 голосов
/ 06 апреля 2011

Есть ли разница в том, как magic_quotes_gpc () настроена на ваших разных серверах (phpinfo (); может сказать вам)?stripslashes () требуется только в том случае, если он есть, в противном случае это может привести к нарушению вашего XML.

0 голосов
/ 06 апреля 2011

Я только догадываюсь, но, возможно, проблема в новых строках ваших данных. Вы пытались свернуть строку в одну строку перед обработкой?

...