1

我正在尝试制作一个重定向到随机 YouTube 视频的脚本。我将如何获取 vidKey,将每个 $vidkey 放入一个数组中,然后随机化该数组以便重定向到不同的 YouTube 视频?

$sxml = simplexml_load_file("http://gdata.youtube.com/feeds/api/users/TechTubeCentral/uploads?max-results=25");
foreach ($sxml->entry as $entry) {
  $vidKey = substr(strrchr($entry->id,'/'),1);
}
4

3 回答 3

3

将每个键放入一个数组中,然后在完成后对其进行随机播放:

$sxml = simplexml_load_file("http://gdata.youtube.com/feeds/api/users/TechTubeCentral/uploads?max-results=25");
$vidKeys = array();
foreach ($sxml->entry as $entry)
  $vidKeys[] = substr(strrchr($entry->id,'/'),1);

shuffle($vidKeys);

然后只需从中选择一个条目,例如$vidKeys[0].

您也可以将结果放入数据库中,然后ORDER BY RAND(). 在下一次请求时,您从数据库中获取视频密钥,从列表中选择并删除一个条目(请参阅 参考资料array_shift),然后将列表放回数据库中。您这样做直到没有更多的视频键,然后再次触发 google 查询,依此类推...这可以避免您的脚本在每次页面加载时查询 Google,并减少被重定向到同一视频的机会

于 2013-06-18T22:56:18.523 回答
0

PHP 有一个内置函数,用于从数组中选择一个(或多个)随机元素,array_rand()

$sxml = simplexml_load_file("http://gdata.youtube.com/feeds/api/users/TechTubeCentral/uploads?max-results=25");
$vidKeys = array();
foreach ($sxml->entry as $entry)
    $vidKeys[] = substr(strrchr($entry->id,'/'),1);
$randomVidKey = $vidKeys[array_rand($vidKeys)];
于 2013-06-18T23:08:33.073 回答
0
$i=0; $random_video = mt_rand(1, 25);

  $sxml = simplexml_load_file("http://gdata.youtube.com/feeds/api/users/TechTubeCentral/uploads?max-results=25");
foreach ($sxml->entry as $entry) {

    if($random_video==$i++){
  $vidKey = substr(strrchr($entry->id,'/'),1); break;
    }
}
于 2013-06-18T23:03:40.593 回答