函数:
opendir($url):
获取 $url 的句柄,就是一个资源 $resource
readdir($resource):
读取资源会自动指向下一个,需要注意的是,该函数不一定只是返回 bool 的值,所以判断需要利用全等来判断 !== false
closedir($resource):
需要关闭资源
is_dir($url)
is_file($url)
代码(供自己理解)
<?php
class GetStructInfo {
function __construct() {}
function __destruct() {}
private static function NewFileUrl($url, $file_name) {
if ($file_name == '..') {
// 分割为了组成上层目录字符串
$parts = preg_split("/\\\/", $url);
$new_file_name = $parts[0];
for ($loop = 1; $loop != count($parts) - 1; $loop++) {
$new_file_name .= '\\'.$parts[$loop];
}
return $new_file_name;
} else {
$new_file_name = $url.'\\'.$file_name;
return $new_file_name;
}
}
private static function PrintStruct($url) {
// 判断是否为目录
if (is_dir($url)) {
// 打开目录
$dir_handle = opendir($url);
// 取得文件以及目录
while (($file_name = readdir($dir_handle)) !== false) {
if ($file_name == '.') continue;
// 组成新的目录
$new_file_name = self::NewFileUrl($url, $file_name);
echo "<li><a href='index.php?url=$new_file_name'>$file_name</a></li>";
}
// 关闭目录
closedir($dir_handle);
} else {
// 判断是否为文件
if (is_file($url)) {
$contents = file_get_contents($url);
echo $contents;
} else {
// 都不是 则错误
echo "<li>This url is not available !</li>";
}
}
}
static function BuildStruct($url) {
self::PrintStruct($url);
}
}
?>