0

PHP、RSS フィードの読み取り。私のコードは正常に機能しますが、すべての RSS リンクでは機能しません。たとえば、次のようになります。

リンク作成エラー

  • http://stackoverflow.com/feeds/tag?tagnames=php&sort=newest
  • https://www.facebook.com/feeds/page.php?id=20669912712&format=rss20

エラー メッセージ

  • Parse error: syntax error, unexpected T_VARIABLE ...
  • Warning: DOMDocument::load() [domdocument.load]: Opening and ending tag mismatch ...

これらの (上記の) RSS リンクは、私が見つけたさまざまなタイプのコードに問題があります。
そして、これらのリンクは「有効な」形式ではないと言っている人もいます。
しかし、SimplePieはこれらのリンクをうまく読み取ることができます

  • なんで?
  • SimplePie はこれらのリンクを読むことができます..そして私ではありませんか?

コードが SimplePie のようなすべてのフィードでうまく機能するようにしたい.. ;(
... ...

私が使用しているクラスの簡単なコード サンプルは次のとおりです。

class RSSREADER {
private $xml;
private $items;
private $item;

public static function _ParseFeeds ($link)
{
    $self->xml = @simplexml_load_file($link);
    echo $self->xml->channel->title.'<br />';
    echo $self->xml->channel->description.'<br /><br />';

    $self->items = $self->xml->channel->item;
    foreach ($self->items as $self->item) {
        echo $self->item->title.'<br />';
        echo $self->item->description.'<br />';
    }
}
}
4

1 に答える 1

2

多くの RSS フィードは実際には無効です。SimplePie やその他のパーサーは、これらのひどい実装を回避するために多大な努力を払うことがよくあります。そのため、独自のライブラリを作成するよりも、これらのライブラリを使用する方が簡単です。私たちはSimplePieを使用していますが、SimplePieでさえ失敗するほどひどいフィードがたくさんあります.

要するに; 痛みが好きではない、および/または自分で作成したいというひどい衝動に駆られている場合を除き、別のライブラリを使用してください。お気付きのように、それらを純粋な XML として解析しようとすると、非常に頻繁に失敗します。

于 2011-05-24T00:53:19.470 に答える