Я пытаюсь получить информацию о видео с фида YouTube на YouTube, например, заголовок и эскиз.
Давайте возьмем этот фид в качестве примера: http://gdata.youtube.com/feeds/api/videos/CevxZvSJLk8
Вот код, который у меня есть сейчас:
$videoURL = 'http://gdata.youtube.com/feeds/api/videos/CevxZvSJLk8'; $sxml = simplexml_load_file($videoURL); print_r($sxml);
Однако, похоже, это не включает медиа: групповая часть xml-листа.
По сути, я пытаюсь получить эти два значения:
entry -> media:group -> media:title entry -> media:group -> media:thumbnail
EDIT: Это решение, с которым я закончил чтение других подобных вопросов.
$videoTitle = $sxml->children('media', true)->group->title; $videoThumbnail = $sxml->children('media', true)->group->thumbnail->attributes()->url;
Двоеточие в имени тега разделяет префикс пространства имен от локального элемента или имени атрибута. В фиде в вопросе есть несколько пространств имен.
http://www.w3.org/2005/Atom
http://purl.org/atom/app#
с app
префиксом http://search.yahoo.com/mrss/
с префиксом media
http://schemas.google.com/g/2005
с префиксом gd
http://gdata.youtube.com/schemas/2007
с префиксом yt
Префикс пространства имен является псевдонимом для фактического пространства имен, он действителен только для документа и может быть изменен для дочерних узлов. Следующий фид мог использовать префиксный atom
для http://www.w3.org/2005/Atom
. Поэтому в зависимости от префикса пространства имен из документа это плохая идея.
Если вы используете Xpath fo для извлечения элементов из документа, вы можете зарегистрировать свои собственные префиксы для используемых пространств имен. В следующем примере выбирается заголовок media rss и URL большого эскиза непосредственно в виде строк. Если элемент не существует, он возвращает пустую строку.
$videoURL = 'http://gdata.youtube.com/feeds/api/videos/CevxZvSJLk8'; $dom = new DOMDocument(); $dom->load($videoURL); $xpath = new DOMXPath($dom); $xpath->registerNamespace('mrss', 'http://search.yahoo.com/mrss/'); var_dump( $xpath->evaluate('string(//mrss:title)', NULL, FALSE), $xpath->evaluate('string(//mrss:thumbnail[@width="480"]/@url)', NULL, FALSE) );
Вывод:
string(28) "Katy Perry - Roar (Official)" string(40) "http://img.ruphp.com/php/0.jpg"