質問

PHPを使用してRSSフィードのiTunesタグにアクセスする必要があります。ポッドキャストフィードにsimplepieを使用したことがありますが、それを使用してiTunesタグを取得する方法がわかりません。 simplepieを使用してそれを行う方法はありますか、それともより良い方法がありますか?


さて、Simple 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のことですか、それとも両方ですか?

ご協力ありがとうございます。 G

役に立ちましたか?

解決

このコードは私のために機能します:

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

他のヒント

代わりにSimpleXMLで属性を取得するには:

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

使用:

$category_text = $channel_itunes->category->attributes()->text;

PHP5を使用している場合、シンプルXMLを使用すると、必要な情報を解析できます。

SimplePieには get_item_tags()関数があります。アクセスできるようにする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top