Перестает работать API Twitter simplexml_load_string

#php #xml #api #twitter #simplexml

#php #xml #API #Twitter #simplexml

Вопрос:

Этим утром мой PHP-скрипт для публикации OAuth в Twitter перестал работать. Я подозреваю, что Twitter добавил несколько строк для возвращаемой строки. Кто-нибудь может помочь, как это отладить.

Спасибо

 Warning:  simplexml_load_string() [function.simplexml-load-string]: Entity: line 74: 
parser error : Entity 'copy' not defined in /nfs/c05/h01/mnt/82363/domains/html/c/cron.m.php on line 429

Warning:  simplexml_load_string() [function.simplexml-load-string]:           
<li class="first">amp;copy; 2011 Twitter</li> in /nfs/c05/h01/mnt/82363/domains/html/c/cron.m.php on line 429

Warning:  simplexml_load_string() [function.simplexml-load-string]: ^ in /nfs/c05/h01/mnt/82363/domains/html/c/cron.m.php on line 429
  

Ответ №1:

XML содержит HTML-объекты. amp;copy; недопустимо в XML. В качестве обходного пути вы могли бы предварительно отфильтровать документ перед передачей его в SimpleXML:

 $xml = file_get_contents(...);
$xml = strtr($xml, array_flip(array_diff(
           get_html_translation_table(HTML_ENTITIES),
           get_html_translation_table(HTML_SPECIALCHARS)
       )));

$xml = simplexml_load_string($xml);
  

Ответ №2:

Этот код работает для XML-данных в формате UTF-8.

$xml = mb_strtr($xml, array_flip(array_diff(get_html_translation_table(HTML_ENTITIES),get_html_translation_table(HTML_SPECIALCHARS))));

$xml = simplexml_load_string($xml);

Ответ №3:

повторите строку и найдите новые изменения, которые были внесены в XML-файл,

Возможно, они добавили пространство имен.

Комментарии:

1. также покажите код, в который вы загружаете строку, возможно, вам требуется что-то другое

2. ищите 'copy' в xml;