I am trying to get the url
attributes from the <media:content>
elements in this RSS feed:
https://news.google.com/rss/search?q=test&as_qdr=w1&scoring=n&num=100&hl=en-CA&gl=CA&ceid=CA:en
Here’s what I have so far:
$feed_url = "https://news.google.com/rss/search?q=test&as_qdr=w1&scoring=n&num=100&hl=en-CA&gl=CA&ceid=CA:en"; $rss = file_get_contents($feed_url); $rss = new SimpleXMLElement($rss); $items = $rss->channel->item; foreach ($items as $item) { print_r($item); echo "<hr>"; }
This code works for all elements except the ones with a semicolon in the name, like <media:content>
or <dc:contributor>
. If I open the XML feed in my browser I can see the tag I am looking for:
<media:content url="https://lh6.googleusercontent.com/proxy/nxX8kqpFKSDvYg_bf_QrdsS0PYNMFPGspYmTlZlIo0IzyyhYhURxQc5nrpnzfrNBZkWQywioGXdPclazSIEwiz5wklsBePHOCft9qdHl2EmqIES_SMl5orim2xM2eHYalvIgFFeGYvp7cQaCQpKAObhPGQ--diqZg4Io3MSW8f6PXlRAbUcPvpDxB-KRqBj53bbROhoUYuqxkA=-w150-h150-c" medium="image" width="150" height="150"/> </item>
I tried various solutions from other threads but it didn’t work for me. Example:
$xml_object = $rss->channel->item[0]; $ns_media = $xml_object->children('http://search.yahoo.com/mrss/');
I don’t know what I’m doing wrong so I would appreciate some help
Advertisement
Answer
You’re missing a call to the attributes()
method of your SimpleXMLElement
instance:
foreach ($items as $item) { $media_content_url = $item->children('http://search.yahoo.com/mrss/')->attributes()->url; // ... }