Как получить атрибут RSS с помощью PHP - PullRequest
1 голос
/ 03 февраля 2012

У меня есть следующий код для разбора RSS-канала:

$doc = new DOMDocument();                                                                                                                                                                                                                                                   
$doc->load('http://gdata.youtube.com/feeds/api/users/user/uploads?orderby=viewCount');
$arrFeeds = array();
foreach ($doc->getElementsByTagName('entry') as $node) {
  $itemRSS = array ( 
    'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
    'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
    'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
    'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
  );
  array_push($arrFeeds, $itemRSS);
}

Лента выглядит примерно так:

<title type='text'>Handelswetenschappen</title>
<link rel='alternate' type='text/html' href='http://www.youtube.com/watch?v=eDiF7jVsoAQ&amp;feature=youtube_gdata'/>
<media:group>
  <media:category label='Onderwijs' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Education</media:category>
  <media:content url='http://www.youtube.com/v/eDiF7jVsoAQ?version=3&amp;f=user_uploads&amp;app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='253' yt:format='5'/>
  <media:content url='rtsp://v3.cache4.c.youtube.com/CigLENy73wIaHwkEoGw17oU4eBMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='253' yt:format='1'/>
  <media:content url='rtsp://v6.cache8.c.youtube.com/CigLENy73wIaHwkEoGw17oU4eBMYESARFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='253' yt:format='6'/>
  <media:description type='plain'>Wil jij meer weten over de opleiding Handelswetenschappen? Bekijk dan snel dit filmpje. Studenten Lise en Jean-Marie vertellen je alles over Handelswetenschappen studeren. Ze gaan langs bij de decaan, bij een oud-student en bij toekomstig werkgever.</media:description>
  <media:keywords>HUB, hubrussel, hogeschool, universiteit, brussel, unief, studie, student, studeren, studentenleven, kot, examen, les, cursus, prof, docent, diploma, bachelor, master, professioneel, academisch, opleiding, blokken, eindwerk, eindproef, masterproef, stage, studentenclub, cantus, studiebegeleiding, geslaagd, spieken, fuif, uitgaan, job, studentenjob, handelswetenschappen, economie, TW, toegepaste, economische, wetenschappen, ehsal</media:keywords>
  <media:player url='http://www.youtube.com/watch?v=eDiF7jVsoAQ&amp;feature=youtube_gdata_player'/>
  <media:thumbnail url='http://i.ytimg.com/vi/eDiF7jVsoAQ/0.jpg' height='360' width='480' time='00:02:06.500'/>
  <media:thumbnail url='http://i.ytimg.com/vi/eDiF7jVsoAQ/1.jpg' height='90' width='120' time='00:01:03.250'/>
  <media:thumbnail url='http://i.ytimg.com/vi/eDiF7jVsoAQ/2.jpg' height='90' width='120' time='00:02:06.500'/>
  <media:thumbnail url='http://i.ytimg.com/vi/eDiF7jVsoAQ/3.jpg' height='90' width='120' time='00:03:09.750'/>
  <media:title type='plain'>Handelswetenschappen aan de HUB</media:title>
  <yt:duration seconds='253'/>
</media:group>

С кодом выше, я могу получить заголовок и описание. Что мне нужно знать, так это как получить ссылку, поэтому на самом деле это атрибут элемента «ссылка», media: content url или media: player url.

1 Ответ

2 голосов
/ 03 февраля 2012
$link  = $element->getAttribute("href");

Итак, я думаю, вы захотите что-то вроде этого, измените строку, где вы написали:

'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,

Измените это на:

'link' => $node->getElementsByTagName('link')->getAttribute('href'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...