Получение мультимедиа: thumbnail из XML

Кажется, я просто не могу это решить. Я хочу получить медиа: thumbnail из файла RSS ( http://feeds.bbci.co.uk/news/rss.xml ).

Я провел некоторое исследование и попытался включить идеи из https://stackoverflow.com/questions/6707315/getting-xml-attribute-from-mediathumbnail-in-bbc-rss-feed и из других источников.

Это то, что я получил:

$source_link = "http://feeds.bbci.co.uk/news/rss.xml"; $source_xml = simplexml_load_file($source_link); $namespace = "http://search.yahoo.com/mrss/"; foreach ($source_xml->channel->item as $rss) { $title = $rss->title; $description = $rss->description; $link = $rss->link; $date_raw = $rss->pubDate; $date = date("Ymj G:i:s", strtotime($date_raw)); $image = $rss->attributes($namespace); print_r($image); } 

Когда я запускаю сценарий, все, что я вижу, это белая страница. Если я эхо или print_r любой из других переменных, то он работает как шарм. Это всего лишь $ image, который создает проблемы. Почему это не работает? Thx за любую помощь!

Хорошо, теперь это работает. Я заменил

 $image = $rss->attributes($namespace); 

с

 $image = $rss->children($namespace)->thumbnail[1]->attributes(); $image_link = $image['url']; 

и теперь он работает как шарм.

 $image = $rss->attributes($namespace); 

Это говорит: «Дайте мне все атрибуты этого <item> которые находятся в пространстве имен мультимедиа ». В элементе элемента нет атрибутов (гораздо меньше, чем в пространстве имен мультимедиа), поэтому это ничего не возвращает.

Вы хотите это:

 $firstimage = $rss->children($namespace)->thumbnail[0]; 

BTW, когда вы используете SimpleXML, вам нужно быть осторожным, чтобы придать вашему SimpleXMLElements строку, когда вам нужно текстовое значение элемента. Что-то вроде $rss->title – это SimpleXMLElement , а не строка.