1

属性を取得しようとしてい$xml->entry->yt:statistics->attributes()->viewCountます。SimpleXML でいくつか試してみましたが、実際には機能しません。

試み #1

<?php
$xml = simplexml_load_file("http://gdata.youtube.com/feeds/api/videos?author=Google");
echo $xml->entry[0]->yt:statistics['viewCount'];
?>

試み #2

<?php
$xml = simplexml_load_file("http://gdata.youtube.com/feeds/api/videos?author=Google");
echo $xml->entry[0]->yt:statistics->attributes()->viewCount;
?>

どちらも空白を返しますが、SimpleXML は機能していますが、フィードのタイトルを取得しようとしましたが、うまくいきました!

何か案は?

SOや他のサイトで他の例をたくさん見てきましたが、どういうわけかこれは機能していませんか? PHP は ':' をカットオフとして認識しますか、それとも私は何かばかげたことをしているだけですか?

ありがとうございます。

4

3 に答える 3

1

YouTubeビデオの視聴回数を取得したいだけの場合は、ビデオIDを指定する必要があります。YouTube IDは、各動画のURLに記載されています。たとえば、「http://www.youtube.com/watch?v=ccI-MugndOU」のように、IDはccI-MugndOUです。ビューカウントを取得するには、以下のコードを試してください

$sample_video_ID = "ccI-MugndOU";
$JSON = file_get_contents("http://gdata.youtube.com/feeds/api/videos?q={$sample_video_ID}&alt=json");
$JSON_Data = json_decode($JSON);
$views = $JSON_Data->{'feed'}->{'entry'}[0]->{'yt$statistics'}->{'viewCount'};
    echo $views;
于 2012-10-12T10:06:17.623 に答える
1

zend フレームワークのgdata コンポーネントを使用します。個別のモジュールとしても利用できるため、zend 全体を使用する必要はありません。

于 2012-10-12T10:09:35.773 に答える
0

プレフィックスは、そのyt:要素がドキュメントの残りの部分とは異なる「XML 名前空間」にあることを示します。メソッドを使用してその名前空間に切り替えるように SimpleXML に指示する必要があります->children()

試行していた行は、実際には次のようになります。

echo (string)$xml->entry[0]->children('yt', true)->statistics->attributes(NULL)->viewCount;

これを分解するには:

  • (string)- これは良い習慣です: 属性を表す SimpleXML オブジェクトではなく、属性の文字列の内容が必要です。
  • $xml->entry[0]- 予想通り
  • ->children('yt', true)- ローカル エイリアス 'yt' を持つ名前空間に切り替えます
  • ->statistics- 予想通り
  • ->attributes(NULL)- 技術的には、属性「viewCount」はデフォルトの名前空間に戻っています。これは、「yt:」のプレフィックスが付いていないためです。表示するには元に戻す必要があります。
  • ->viewCount-実行すると、 not->attributes()でアクセスされる属性だけが得られます->foo['foo']
于 2012-10-13T21:09:56.530 に答える