Accès PHP aux balises iTunes dans un flux RSS
j'ai besoin d'accéder aux balises iTunes dans un flux RSS en utilisant PHP. J'ai déjà utilisé simplepie pour les flux podcast, mais je ne suis pas sûr de savoir comment obtenir les tags iTunes en l'utilisant. Est-il possible d'utiliser simplepie de le faire ou est-il un meilleur moyen?
OK j'ai essayé le XML Simple.
Tout cela (le code ci-dessous) semble fonctionner
$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;
maintenant je dois obtenir les catégories itunes. Il semble être représenté de plusieurs façons. Dans ce cas, J'obtiens le XML suivant:
<itunes:category text="Technology"/>
<itunes:category text="Technology">
<itunes:category text="Software How-To"/>
</itunes:category>
Je m'attendrais à pouvoir obtenir la catégorie avec quelque chose comme ceci:
$category_text = $channel_itunes->category['text'];
Mais cela ne semble pas fonctionner.
j'ai vu d'autres façons de représenter la catégorie que je ne sais vraiment pas qui obtenir.
par exemple:
de la Technologie Affaires L'éducation
est-ce un truc des médias ou un truc d'itunes ou les deux?
Merci Pour Votre Aide. G
4 réponses
ce code fonctionne pour moi:
//$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
}
}
si vous avez PHP5, L'utilisation de XML Simple peut aider à analyser l'information dont vous avez besoin.
SimplePie a une get_item_tags()
fonction qui devrait vous permettre d'y accéder.
pour obtenir L'attribut avec SimpleXML, à la place:
$category_text = $channel_itunes->category['text'];
utiliser:
$category_text = $channel_itunes->category->attributes()->text;