我该如何编辑下面的函数。。。
只允许链接文件,并允许文件夹带有h1标记?
例如,我想要的输出是
<h1>folder name</h1>
<a href="#">File.txt</a>
<a href="#">File.txt</a>
<a href="#">File.txt</a>
<h1>folder name</h1>
<a href="#">File.txt</a>
<a href="#">File.txt</a>
<a href="#">File.txt</a>
这是我发现的另一个需要编辑的Stackoverflow答案中的PHP函数。
function listFolderFiles($dir){
$ffs = scandir($dir);
echo '<ol>';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li>'.$ff;
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
echo '</li>';
}
}
echo '</ol>';
}
我不确定如何"检测"$ff变量是文件夹或文件?
这应该对您有用!目录在h1
中,文件在a
标签中:
(我用函数is_dir
检查它是否是目录,如果是,我在h1
中输出名称,否则在a
标签中输出)
<?php
function listFolderFiles($dir){
$ffs = scandir($dir);
echo '<ol>';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li>';
if(is_dir($dir.'/'.$ff))
echo "<h1>" . $ff . "</h1>";
else
echo "<a href='"#'">" . $ff . "</a><br />";
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
echo '</li>';
}
}
echo '</ol>';
}
?>
如果你不想在列表中使用这个:
<?php
function listFolderFiles($dir){
$ffs = scandir($dir);
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
if(is_dir($dir.'/'.$ff))
echo "<h1>" . $ff . "</h1>";
else
echo "<a href='"#'">" . $ff . "</a><br />";
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
}
}
}
?>
使用Spl
$dir = new FilesystemIterator( __DIR__, FilesystemIterator::SKIP_DOTS );
foreach ($dir as $fileinfo) {
if( !$fileinfo->isDir()){
echo '<a href="#">'.$fileinfo->getFilename().'</a>';
}else{
echo '<h1>'.$fileinfo->getFilename().'</h1>';
}
}
还没有测试过。但它应该会成功,这是OOP的方法。好处是你可以绕过所有对点的检查,如果你喜欢Windows上的"/"而不是"''",就会有一个标志。
FilesystemIterator::UNIX_PATHS
标志是按位的,所以要使用多个标志,你可以这样做。
$dir = new FilesystemIterator( __DIR__, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS );
在这部分中,您需要修改:
// If $ff is a directory
if(is_dir($dir.'/'.$ff)) {
// This is where you echo the folder name
echo '<h1>'.$ff.'</h1>';
// This will list what's in the directory
listFolderFiles($dir.'/'.$ff);
}
$dir = scandir('your path');
foreach($dir as $d) {
if(is_file($d)) {
echo $d . ' is file<br>';
} else if(is_dir($d)) {
echo $d . ' is directory<br>';
}
}
请参阅php手册。