Кажется, у меня проблемы с доступом к части RSS-канала. Я прочитал эту статью: Accessing date as XML node in PHP и Problem getting author from a wordpress RSS feed using SimpleXmlElement статью, но я все еще не могу заставить ее работать.PHP Недопустимый аргумент, предоставленный foreach() при получении 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>
вот часть 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;
}
, но я получаю эту ошибку:
Invalid argument supplied for foreach()
Я пытался изменить его на :
$feed->getElementsByTagName('channel')->item(0)
, но затем ничего не выводится.
Я также попытался:
$feed->getElementsByTagName('channel')
но получаю ошибку:
Call to undefined method DOMElement::children()
Вопрос
Пожалуйста, может кто-нибудь сказать мне, с помощью PHP, как получить доступ к DC: создатель тега и присвоить это значение переменной?
Редактировать
$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;
}
Похоже, вы должны просто использовать '$ feed-> getElementsByTagName ('channel')' в вашем для каждого. – BizzyBob
См. Нижнюю часть ответа. Пробовал, но получил ошибку: вызов неопределенного метода DOMElement :: children() – JamesG