【发布时间】: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