2011-06-29 11 views
1

非常に一般的なPHPスクリプトを使用してRSSを解析しています。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 news feedでこのコードをテストするとき、それはうまく動作しますが、私はこのother rss feed、その文句を言わない仕事でそれをしようとした場合、などのエラーの* LOTを与えました。 警告:DOMDocument :: loadXML()[domdocument.loadxml]:開始タグと終了タグの不一致:エンティティのP行5とBODY、行:C:\ Users \ Domingo \ Dropbox \ www \ temp \ parser.phpの6 18行目。。上記の2つのrssファイルは有効ですが、唯一の違いは、そのうちの1つに<?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 18Warning: 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

+0

コードはスタンドアロンで実行されないため、他の人がコードをデバッグすることは困難です。私は単純化されたバージョンを作成し、その質問を更新することをお勧めします。 –

+0

パーサは、フィードに存在しないXML要素PおよびBODYについて不平を言っています。おそらく、スクリプトによって取得されたデータは、ブラウザによって取得されたデータとは異なります。スクリプトに解析するXMLがあると確信していますか? ところで、W3.orgのフィード検証ツールでは、2番目のフィードが有効であるとはみなされません。 – Kwebble

答えて

0

は、第二供給自体は正常に見えると含まれており、身体またはpタグはありません。あなたはおそらく物事を混ぜて、間違ったファイルを読み込んでいます。

関連する問題