PHP-доступ к тегам iTunes в RSS-канале

Мне нужно получить доступ к тегам iTunes в RSS-канале с помощью PHP. Раньше я использовал simplepie для подкастов, но не знаю, как с его помощью получить теги iTunes. Есть ли способ использовать simplepie для этого или есть лучший способ?


Хорошо, я попробовал простой XML.

Все это (код ниже), кажется, работает

$feed = simplexml_load_file('http://sbhosting.com/feed/');
$channel = $feed->channel;
$channel_itunes = $channel->children('http://www.itunes.com/dtds/podcast-1.0.dtd');
$summary = $channel_itunes->summary;
$subtitle = $channel_itunes->subtitle;
$category = $channel_itunes->category;
$owner = $channel_itunes->owner->name;

Теперь мне нужно получить категории itunes. Кажется, они представлены несколькими способами. В этом случае я получаю следующий XML:

<itunes:category text="Technology"/>
<itunes:category text="Technology">
  <itunes:category text="Software How-To"/>
</itunes:category> 

Я ожидаю, что смогу получить категорию с чем-то вроде этого:

$category_text = $channel_itunes->category['text'];

Но это, похоже, не работает.

Я видел другие способы представить категорию, которую я действительно не знаю, кого взять.

Например:

Технологическое бизнес-образование

Это что-то из средств массовой информации, или из-за iTunes, или и то, и другое?

Спасибо за вашу помощь. г


person gbennett    schedule 05.10.2008    source источник


Ответы (4)


Этот код работает для меня:

//$pie is a SimplePie object
$iTunesCategories=$pie->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES,'category');
if ($iTunesCategories) {
  foreach ($iTunesCategories as $iTunesCategory) {
    $category=$iTunesCategory['attribs']['']['text'];
    $subcat=$iTunesCategory['child']["http://www.itunes.com/dtds/podcast-1.0.dtd"]['category'][0]['attribs']['']['text'];
    if ($subcat) {
      $category.=":$subcat";
    }
    //do something with $category
  }
}
person Doug Kaye    schedule 20.12.2008
comment
Даг, Во-первых, это честь, что ты ответишь на мой вопрос. Я большой поклонник вашей работы во всем. Этот код отлично сработал для меня. Спасибо, Гленн. - person gbennett; 28.04.2009

В SimplePie есть функция get_item_tags(), которая позволит вам получить к ним доступ.

person ceejayoz    schedule 05.10.2008

Вместо этого, чтобы получить атрибут с помощью SimpleXML:

$category_text = $channel_itunes->category['text'];

Использовать:

$category_text = $channel_itunes->category->attributes()->text;
person Firegab    schedule 31.07.2018

Если у вас PHP5, использование Simple XML может помочь в анализе необходимой информации.

person Ólafur Waage    schedule 05.10.2008