尝试使用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>
非常感谢任何帮助!
答案 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.
希望这有帮助。