【问题标题】:Simple Array Redirect简单数组重定向
【发布时间】:2013-05-27 19:58:20
【问题描述】:

我正在尝试编写一个代码,将用户重定向到基于上传者的随机 youtube 视频。脚本根本没有加载,我不知道为什么。这是脚本

<?php
$feedURL = 'http://gdata.youtube.com/feeds/api/users/USER/uploads?max-results=50';
$sxml = simplexml_load_file($feedURL);
$i=0;
foreach ($sxml->entry as $entry) {
      $watch = (string)$media->group->player->attributes()->url;
      $videoid = substr($watch, 31, -29);     
      $finalid = "\"$videoid\", ";
      $urls = array ($finalid);
      $url = $urls[array_rand($urls)]; 
      header("Location: http://www.youtube.com/watch?v=$url&list=UL"); 
}

?>            

【问题讨论】:

  • 你做过任何测试吗?这些函数调用中是否有任何失败?检索到的数据是否正确?你打开错误报告了吗?
  • 是的,我有。如果我回显最终 ID,它可以正常工作。
  • 我已经编辑了您代码的格式,以说明您的循环包含的代码比它应该包含的要多得多。此外,您不能以您似乎正在尝试的方式定义一个数组,它只会包含一个由引号括起来的几个视频 ID 组成的字符串,用逗号分隔。给我一点时间来重写这个。
  • 尝试评论标头重定向并将 error_reporting 转换为 E_ALL。您很可能在标头调用之前有输出,如果出现错误,php 会设置为失败。
  • @Sammitch 我看到了同样的事情,循环的最后两行应该移到循环之外。但是,数组设置不会引发错误。它不会按预期工作,但不会导致错误。它只会在每次迭代时覆盖自己。 $urls 应该在循环之前定义并在每次迭代时附加 $videoid。

标签: php xml arrays youtube simplexml


【解决方案1】:

您的代码应该看起来更像这样:

<?php
$feedURL = 'http://gdata.youtube.com/feeds/api/users/USER/uploads?max-results=50';
$sxml = simplexml_load_file($feedURL);

// check the return value
if( $sxml === false ) { die('error retrieving XML data'); }

// declare an empty array
$video_ids = array();

// loop through returned data
foreach ($sxml->entry as $entry) {
    $watch = (string)$media->group->player->attributes()->url;
    // add each ID to the array
    $video_ids[] = substr($watch, 31, -29);
}

// check that there were some actual videos in that data
if( empty($video_ids) ) { die('No videos returned'); }

// pick
$url = $video_ids[array_rand($video_ids)]; 
//redirect
header("Location: http://www.youtube.com/watch?v=$url&list=UL");

【讨论】:

  • 我试过了,得到了以下错误Here's a pastebin of it
  • 您的 pastebin 提示 1. 您的提要 URL 不正确。 2.您没有保留对返回值的检查。此外, $media->group->player->attributes()->url 似乎有几种不同程度的不正确,因为我刚刚尝试运行此代码。提示:print_r($sxml)
  • 你把我弄丢了。我不明白。
猜你喜欢
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多