PHP获取RSS时为foreach()提供的参数无效

时间:2017-01-03 22:41:07

标签: php foreach rss

我似乎无法访问部分RSS Feed。我已经阅读了这篇文章:Accessing date as XML node in PHPProblem getting author from a wordpress RSS feed using SimpleXmlElement文章,但我似乎无法让它发挥作用。

<item>
  <title>This is the title</title>
  <dc:creator>!an (@myHandle)</dc:creator>
  <description><![CDATA[<p class="TweetTextSize  js-tweet-text tweet-text"  lang="en">What is this tweeet</p>]]></description>
  <pubDate>Tue, 03 Jan 2017 22:01:54 +0000</pubDate>
  <guid>1234567</guid>
  <link>1234567</link>
  <twitter:source/>
  <twitter:place/>
</item>

这是我得到的rss的一部分。以下是完整的RSS:https://twitrss.me/twitter_search_to_rss/?term=test+this+feed

我试图用这样的PHP代码访问它:

$feed = new DOMDocument();
 $feed->load('https://twitrss.me/twitter_search_to_rss/?term=test+this+feed');

foreach ($feed->getElementsByTagName('channel')->item(0) as $item) {
  $ns_dc = $item->children('http://purl.org/dc/elements/1.1/');
  echo $ns_dc->creator;
}

但我一直收到这个错误:

  

为foreach()提供的参数无效

我尝试将其更改为:

$feed->getElementsByTagName('channel')->item(0)

然后没有输出。

我也尝试过:

$feed->getElementsByTagName('channel')

然后得到错误:

  

调用未定义的方法DOMElement :: children()

问题

请有人告诉我,使用PHP如何访问dc:creator标签并将该值分配给变量?

修改

      $i = 1;
  foreach ($feed->channel as $row) {
    echo $i;

      foreach ($row->children() as $key => $val) {
          if ($key == "item") {
            if ($i == 1) {
              $ns_dc = $val->children('http://purl.org/dc/elements/1.1/');
              echo $ns_dc->creator;
              }
          }

      }

    $i = $i + 1;
  }

1 个答案:

答案 0 :(得分:2)

由于您正在处理XML内容,我发现使用SimpleXML而不是DOMDocument更容易。由于每个channelitem位于同一个区块,因此您可以查找$feed = simplexml_load_file('https://twitrss.me/twitter_search_to_rss/?term=test+this+feed'); foreach ($feed->channel as $row) { foreach ($row->children() as $key => $val) { if ($key == "item") { $ns_dc = $val->children('http://purl.org/dc/elements/1.1/'); echo $ns_dc->creator; } } } 的密钥。

routes: {
  'health': 'health'
},

health: function() {
  return "OK";
}

此代码输出&#34;创建者&#34;你期待的字符串。