Проблема парсинга RSS с помощью PHP-скрипта - PullRequest
1 голос
/ 29 июня 2011

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

(*) больше ошибок, таких как: 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

1 Ответ

0 голосов
/ 29 июня 2011

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

...