我是PHP的新手,但我想做的是为我的一些公司的工作提供动态的目录。
因此,如果我将作业描述的所有pdf放在名为../jobops的文件夹中,并且php文件位于根目录中,我需要做什么。
答案 0 :(得分:5)
<?php
$directory = "/jobops";
$contents = scandir($directory);
if ($contents) {
foreach($contents as $key => $value) {
if ($value == "." || $value == "..") {
unset($key);
}
}
}
echo "<ul>";
foreach($contents as $k => $v) {
echo "<li><a href=\"$directory/" . $v . "\">link text</a></li>";
}
echo "</ul>";
?>
应该有效。获取目录,扫描它,将所有文件名映射到数组$contents
删除相对URL(“。”和“..”),然后将它们回显。
请记住,foreach
相对较贵;所以您可能希望简单地取消设置$contents[0]
和$contents[1]
。
<小时/> 编辑以回应以下(来自OP):
警告: SCANDIR(www.markonsolutions.com/jobops) [function.scandir]:无法打开 dir:没有这样的文件或目录 /home/content/t/i/m/timhish/html/test.php 第5行警告:scandir() [function.scandir] :(错误2):没有这样的 文件或目录 /home/content/t/i/m/timhish/h/i/s/h/html/test.php 第5行警告:参数无效 为foreach()提供的 /home/content/t/i/m/timhish/html/test.php 在第15行
我从“/ jobops”改变了ti 认为这是一个相对目录 事情,但显然不是这样。也 我不知道是什么 / home / content .......事情是,但我 目前托管与爸爸也许 这就是他们如何存储东西?
$directory
变量与调用脚本的位置有关。在我的情况下,这是从根文件夹运行所以它应该,对我来说,$directory = "jobops"
假设文件夹和脚本存储在同一个地方。在不知道服务器的目录结构的情况下,我无法真正帮助您,但我建议排除scandir()
函数的问题。
要执行此操作,请在脚本所在的目录中创建一个文件夹,调用至少一个图像(以便以下if()
不会取消整个数组)并查看是否这样可行。如果它 那么你就找不到文件夹的相对路径了。如果不那么我就会陷入困境。
答案 1 :(得分:3)
SPL(PHP5)为目录遍历提供了一个很好的接口:
// whitelist of valid file types (extension => display name)
$valid = array(
'pdf' => 'PDF',
'doc' => 'Word'
);
$files = array();
$dir = new DirectoryIterator($directory_path);
foreach($dir as $file)
{
// filter out directories
if($file->isDot() || !$file->isFile()) continue;
// Use pathinfo to get the file extension
$info = pathinfo($file->getPathname());
// Check there is an extension and it is in the whitelist
if(isset($info['extension']) && isset($valid[$info['extension']]))
{
$files[] = array(
'filename' => $file->getFilename(),
'size' => $file->getSize(),
'type' => $valid[$info['extension']], // 'PDF' or 'Word'
'created' => date('Y-m-d H:i:s', $file->getCTime())
);
}
}
答案 2 :(得分:2)
答案 3 :(得分:0)
<?php
// open this directory
$myDirectory = opendir(".");
// get each entry
while($entryName = readdir($myDirectory)) {
$dirArray[] = $entryName;
}
// close directory
closedir($myDirectory);
// count elements in array
$indexCount = count($dirArray);
Print ("$indexCount files<br>\n");
// sort 'em
sort($dirArray);
// print 'em
print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>\n");
print("<TR><TH>Filename</TH><th>Filetype</th><th>Filesize</th></TR>\n");
// loop through the array of files and print them all
for($index=0; $index < $indexCount; $index++) {
if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden files
print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>");
print("<td>");
print(filetype($dirArray[$index]));
print("</td>");
print("<td>");
print(filesize($dirArray[$index]));
print("</td>");
print("</TR>\n");
}
}
print("</TABLE>\n");
?>
似乎工作正常,但我需要调整它只搜索子目录,只有* .pdf文件