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

获取RSS时为foreach()提供的PHP参数无效,php,foreach,rss,Php,Foreach,Rss,我似乎很难访问RSS提要的一部分。我已经读过这篇文章,但我似乎仍然无法让它发挥作用 <item> <title>This is the title</title> <dc:creator>!an (@myHandle)</dc:creator> <description><![CDATA[<p class="TweetTextSize js-tweet-text tweet-text&qu

我似乎很难访问RSS提要的一部分。我已经读过这篇文章,但我似乎仍然无法让它发挥作用

<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>
但我一直在犯这样的错误:

为foreach()提供的参数无效

我已尝试将其更改为:

$feed->getElementsByTagName('channel')->item(0)
但是没有任何结果

我还尝试:

$feed->getElementsByTagName('channel')
但随后会出现错误:

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

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

编辑
因为您处理的是XML内容,所以我发现使用SimpleXML而不是DOMDocument更容易。由于每个
频道位于同一块中,因此您可以进行foreach查找
项的键

$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;
        }
    }
}

这段代码输出您期望的“creator”字符串。

因为您处理的是XML内容,所以我发现使用SimpleXML而不是DOMDocument更容易。由于每个
频道位于同一块中,因此您可以进行foreach查找
项的键

$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;
        }
    }
}

此代码输出您期望的“creator”字符串。

看起来您应该在for each中使用
$feed->getElementsByTagName('channel')
。请参阅答案的底部。尝试了,但出现了错误:调用未定义的方法DomeElement::children()看起来您应该在for each中使用
$feed->getElementsByTagName('channel')
。请查看答案的底部。尝试了它,但出现了错误:调用未定义的方法DomeElement::children()否。我解决了。我只想要最近的。非常感谢。我已经接受了答案和+1。谢谢老兄的快速回复。不。我解决了。我只想要最近的。非常感谢。我已经接受了答案和+1。谢谢老兄的快速回复。
$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;
        }
    }
}