2017-01-03 6 views
0

Ich habe Probleme beim Zugriff auf einen Teil eines RSS-Feeds. Ich habe diesen Artikel gelesen: Accessing date as XML node in PHP und Problem getting author from a wordpress RSS feed using SimpleXmlElement Artikel, aber ich kann immer noch nicht scheinen, um dies zu arbeiten.PHP Ungültiges Argument für foreach() beim Abrufen von 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> 

hier ist der teil der rss ich bekomme. Hier ist die vollständige RSS: https://twitrss.me/twitter_search_to_rss/?term=test+this+feed

Ich versuche, diesen Code mit PHP zugreifen wie so:

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

aber ich halte diesen Fehler:

Invalid argument supplied for foreach()

ich versucht habe, zu ändern, es zu :

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

aber dann nichts ausgibt.

ich auch versucht:

$feed->getElementsByTagName('channel') 

aber dann den Fehler:

Call to undefined method DOMElement::children()

Frage

Bitte kann mir jemand sagen, mit PHP, wie die DC zuzugreifen: Schöpfer Tag und diesen Wert einer Variablen zuweisen?

bearbeiten

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

Sieht so aus, als sollten Sie '$ feed-> getElementsByTagName ('channel')' in Ihrem Namen verwenden. – BizzyBob

+0

Bitte unten in der Antwort sehen. Versuchte es, aber erhielt den Fehler: Aufruf zu undefinierter Methode DOMElement :: children() – JamesG

Antwort

1

Da Sie mit XML-Inhalten zu tun haben, fand ich es einfacher SimpleXML von DOMDocument stattdessen zu verwenden. Da jeder <item> im selben Block wie channel ist, können Sie eine Suche nach einem Schlüssel von item.

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

Dieser Code gibt die von Ihnen erwartete Zeichenfolge "creator" aus.

+1

Nein. Ich habe es gelöst. Ich wollte nur das Neueste. Danke .. Ich habe die Antwort angenommen und +1. Danke Kumpel für die schnelle Antwort. – JamesG

Verwandte Themen