utf8_decode ошибка с амперсандом (&) - PullRequest
0 голосов
/ 11 января 2011

Я строю API, который возвращает код XML.Например, API вернет:

<message>hello, this is a message &amp; it used htmlsepcialchars</message>

Я использую file_get_contents () и simplexml_load_string () для загрузки возвращенной информации в массив.

Затем я использовал utf8_decode () для преобразованиясообщение в дружественную кодировку на принимающем сайте.Тем не менее, я получаю следующее сообщение, вывод которого указывает на амперсанд (&) в сообщении:

Warning: main() [function.main]: unterminated entity reference 

Из-за амперсанда остальная часть сообщения обрезается.Есть идеи как обойти эту проблему?

Ответы [ 3 ]

0 голосов
/ 11 января 2011

Ну, строки simpleXML должны быть в кодировке utf8, а значения значений должны быть экранированы.utf_decode() действительно необходим в вашем коде?

0 голосов
/ 11 февраля 2011

Нашел мой ответ, ошибка пользователя.Я в основном снова сбегал где-то в моем коде.

0 голосов
/ 11 января 2011

кажется, что ваш амперсанд не закодирован, поэтому либо дважды расшифруйте его, либо поместите в поле CDATA.

Обычно такие специальные символы следует помещать в поля CDATA.это избавляет от необходимости кодирования.Функции создания php DOM имеют то, что вам нужно.


$doc->createCDATASection

и конечно:

http://www.w3schools.com/Xml/xml_cdata.asp

и http://fr.php.net/manual/en/function.domdocument-create-cdata-section.php

...