我有10个主文件夹,其中包含一些子文件夹。我想创建一个循环遍历主文件夹(10个中的每一个)并为每个文件夹创建标记。
我是php的初学者,我设法创建一个程序来读取目录,并创建链接。但是....代码是每个目录中的相同代码,我不想复制相同的文件10次,所以如果我想改变一些东西,那将是一件令人头疼的事...... 我无法为此创造适当的功能。
是的,请帮助我吗?<?php
$dir = ".";
$handle = opendir($dir);
$entry = readdir($handle);
$foldername=basename(getcwd());
if ($handle = opendir($dir)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
if (is_dir($entry) === true){
$foldername=basename($entry);
echo "<a class='directory' href='http://the_link/".$entry."'> ".$foldername." </a>";
}
}
}
closedir($handle);
}
?>
答案 0 :(得分:4)
最简单的方法是使用RecursiveDirectoryIterator
用法示例:
$ite = new RecursiveDirectoryIterator("../");
foreach ($ite as $file) {
echo $file . "\n";
}
在您的情况下,您可以使用:
$dir = ".";
$ite = new RecursiveDirectoryIterator($dir);
foreach ($ite as $entry) {
if (is_dir($entry)) {
$foldername = basename($entry);
echo "<a class='directory' href='http://the_link/".$entry."'> ".$foldername." </a>";
}
或在函数中:
function displayDir($dir) {
$ite = new RecursiveDirectoryIterator($dir);
foreach ($ite as $entry) {
if (is_dir($entry)) {
$foldername = basename($entry);
echo "<a class='directory' href='http://the_link/".$entry."'> ".$foldername." </a>";
}
}
有关详细信息,请参阅documentation。
答案 1 :(得分:0)
请试试这个:
<?php
getDirectoryList("your directory path");
function getDirectoryList ($directory)
{
$results = array();
$handler = opendir($directory);
while ($file = readdir($handler)) {
if ($file != "." && $file != "..") {
$results[] = $file;
}
}
closedir($handler);
return $results;
}
?>
答案 2 :(得分:0)
对于扫描文件夹和子文件夹:
function scan_folder($from_folder = '/your/default/path/') {
if ($handle = @opendir ( $from_folder )) {
while ( $file = readdir ( $handle ) ) {
if (is_file ( $from_folder . $file )) {
echo $from_folder . $file;
} else if ((is_dir ( $from_folder . $file )) && ($file != '.') && ($file != '..')) {
echo $from_folder . $file;
}
}
closedir ( $handle );
}
}
使用:
scan_folder('/your/path/to/scan/');
使用的功能: