我正在尝试从包含子目录的扫描目录创建导航列表。 我想要的是一个包含该文件的导航列表。此外,当单击目录以包含自定义目录文件时。
这就是我所取得的成就。
1)使用递归函数扫描目录和子目录并打印html列表。
2)使用递归函数扫描目录和子目录以获取文件路径。
3)请求页面变量并将页面值与名称值匹配,然后将inc路径指向文件。
我遇到的问题。
1)我无法确定什么是目录,什么是返回数组的文件
2)我无法在循环中控制页面错误文件 - 返回多个404。
#select目录 $ dir ='页面';
function listFolderFiles($dir){
$files = scandir($dir);
# place value home in first position of array
$home = 'home.php';
$search_home = array_search($home, $files);
if ($search_home > 0) {
unset($files[$search_home]);
array_unshift($files, $home);
}
echo "<ul class='cf nav nav--horiz'>";
foreach($files as $file){
# remove extension from files
$parts = pathinfo($file);
$name = $parts['filename'];
# remove underscore from file name and replace with space.
$search = array('_' ,'-');
$replace = " ";
$str_name = str_replace($search, $replace, $name);
if($file != '.' && $file != '..'){
echo '<li>'.'<a href="?page='.$name.'">'.$str_name.'</a>';
if(is_dir("$dir/$file")){ listFolderFiles("$dir/$file"); }
echo "</li>";
}
}
echo '</ul>';
} # end function
function find_all_files($dir) {
$root = scandir($dir);
foreach($root as $value) {
if($value === '.' || $value === '..') {continue;}
if(is_file("$dir/$value")) {$result[]="$dir/$value";continue;}
foreach(find_all_files("$dir/$value") as $value){
$result[]=$value;
}
}
return $result;
} # end function
# call the function and print inside nav
echo "<nav class='navBar'>";
listFolderFiles($dir);
echo "</nav>";
# call the function and pass the result to array
$allFiles = find_all_files($dir);
# check the query string to see if page is set
$page = isset($_REQUEST['page']) ? $_REQUEST['page'] : '';
# loop through and match the page var with array value
foreach ($allFiles as $file) {
# remove extension from files
$parts = pathinfo($file);
$name = $parts['filename'];
if($page == $name) {
include($file);
}
}