Intereting Posts

Проблема синтаксического анализа RSS с помощью скрипта PHP

im используя очень распространенный скрипт php для анализа RSS;

function getRSS($source,$quien) { $start = microtime(true); ini_set('default_socket_timeout', 1); global $arrFeeds, $downItems, $time_taken; $arrFeeds = array(); $ch = curl_init($source); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($ch); curl_close($ch); $doc = new DOMDocument(); $doc->loadXML($content); foreach ($doc->getElementsByTagName('item') as $node) { $itemRSS = array ( 'title' => sistema($node->getElementsByTagName('title')->item(0)->nodeValue), 'desc' => sistema($node->getElementsByTagName('description')->item(0)->nodeValue), 'link' => $node->getElementsByTagName('link')->item(0)->nodeValue ); echo(sistema($node->getElementsByTagName('title')->item(0)->nodeValue)."<br>"); array_push($arrFeeds, $itemRSS); $downItems+=1; } $time_taken = microtime(true) - $start; if ($downItems>1) {$nu=mysql_query("UPDATE feeds SET lastcheck = NOW() WHERE id = '".$quien."';");} } 

Когда я тестирую этот код с лентой новостей rss из google, он работает нормально, но если я попробую его с помощью этого другого rss-канала , он не будет работать и дал бы LOT * ошибок; Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: несоответствие открытия и окончания тегов: строка 5 и BODY в Entity, строка: 6 в папке C: \ Users \ Domingo \ Dropbox \ www \ temp \ parser.php on line 18 . Два вышеуказанных rss-файла ARE действительны, только один из найденных между ними состоит в том, что один из них имеет строку: <?xml version="1.0" encoding="utf-8"?> другой нет. Это проблема? И как я могу это решить? Спасибо за любую помощь, и ПОЖАЛУЙСТА, не предлагайте использовать rss-парсерную библиотеку.

(*) больше ошибок, таких как: Warning: DOMDocument::loadXML() [domdocument.loadxml]: Opening and ending tag mismatch: BODY line 3 and HTML in Entity, line: 6 in C:\Users\Domingo\Dropbox\www\temp\parser.php on line 18 и Warning: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag HTML line 1 in Entity, line: 7 in C:\Users\Domingo\Dropbox\www\temp\parser.php on line 18

Второй канал сам выглядит отлично и не содержит тегов body или p. Вы, вероятно, смешиваете вещи и загружаете неправильный файл.