В чем проблема с этим кодом?
$feedURL = 'http://gdata.youtube.com/feeds/api/standardfeeds/US/most_viewed?v=2&time=all_time'; $site_url = 'http://localhost/'; // read feed into SimpleXML object $sxml = simplexml_load_file($feedURL); // iterate over entries in feed foreach ($sxml->entry as $entry) { // get nodes in media: namespace for media information $media = $entry->children('http://search.yahoo.com/mrss/'); // get video player URL $attrs = $media->group->player->attributes(); $watch = $attrs['url']; $video_id = str_replace('http://www.youtube.com/watch?v=', '',$watch); $video_id = str_replace('&feature=youtube_gdata', '',$video_id); $video_id = str_replace('_player', '',$video_id); echo $details .= ' '.$site_url.'video/'.$video_id.'';}
Код должен возвращать список из 25 URL-адресов (через канал API YouTube) в формате:
http://localhost/video/video-id/
Но код возвращает ужасный список URL (в том формате, в котором я хочу), смешанный и повторенный.
PS: перед str_replace ссылки отображались корректно, но в формате:
http://www.youtube.com/watch?v=video-id&feature=youtube_gdata_player
Что не так? Как я могу решить это?
последняя строка - проблема: вы добавляете каждую запись в $ details и выводите ее дополнительно.Просто поместите
echo $details;
за петлей и удалите эхо в петле, и все.Используя текущий код, вы повторяете содержимое, добавляя его в переменную и повторяя его.
echo $details .= '..'; $ детали не определены ранее, поэтому используйте echo $details = '...'
$details .= '..';
echo $details = '...'