加载随机声音片段

时间:2011-06-15 05:34:12

标签: php javascript html random

尝试使用php在页面加载/刷新时加载随机声音片段。出于某种原因,我收到了这个错误:

  

警告:   DIR(http://daveywhitney.com/randomizer/clips/)   [function.dir]:无法打开目录:   未实施   /home/cheapra1/public_html/daveywhitney.com/randomizer/index.php   第19行

     

致命错误:调用成员函数   对非对象的read()   /home/cheapra1/public_html/daveywhitney.com/randomizer/index.php   第20行

使用此脚本时:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>RANDOMIZER</title>
    <meta http-equiv="content-type" 
        content="text/html;charset=utf-8" />
</head>

<body>
<h1>RANDOM SOUND GENERATOR</h1>

<br />

<?php 

$i=0;
$myDirectory = dir("http://daveywhitney.com/randomizer/clips/");
while($file=$myDirectory->read())
{
$array[$i]=$file;
$i++;
}
$myDirecotry->close();

$num = count($array);
$random = rand(0, $num);

include "$array[$random]";



?>



</body>
</html>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

嗯,任何自尊的网络服务器,当看到这个:

DIR( “http://daveywhitney.com/randomizer/clips/”);

会非常生气。看起来你的服务器是自尊的!好极了!但这对你意味着什么,你如何解决它?

问题是"http://daveywhitney.com/randomizer/clips/"实际上是HTTP请求字符串。这意味着只有可以转到HTTP请求的东西才能尝试从中读取 - 不幸的是,dir不是那种类型的函数。

所以,这就是问题所在,你如何解决?

你实际上有几个选择。

首先,如果您的服务器上存在该目录,您可以自己手动查找该目录。只需将"http://daveywhitney.com/替换为本地路径上的内容(可能是/var/www/htdocs/randomizer?)

如果它不是本地目录,那并不意味着你是SOL。例如,Apache将以有效的HTML输出目录的内容,这意味着它可以使用DOMDocument进行解析。

$str = file_get_contents('http://daveywhitney.com/randomizer/clips/');
$doc = new DomDocument();
$doc->loadHTML($str);
$doc->getElementsByTagName('a'); //?? Not sure if that is right fn name.

希望这有帮助。