直接上代码: /获取一个目录下的文件列表
function list_dir($path, $type = 'array') {
$flag = false;
$lst = array('dir'=>array(), 'file'=>array());
$base = $path;
$tmp = scandir($base);
foreach ( $tmp as $k=>$v ) {
//过滤掉上级目录,本级目录和程序自身文件名
$bm=mb_detect_encoding($v, array('ASCII','UTF-8','GB2312','GBK','BIG5'));
if($bm=='EUC-CN')$v=iconv('GB2312', 'UTF-8', $v);
if ( !in_array($v, array('.', '..')) ) {
$file = $full_path = hpath($base.DIRECTORY_SEPARATOR.$v,1);
if ( $full_path == __FILE__ ) {
// continue; //屏蔽自身文件不在列表出现
}
// $file = str_replace(dirname(__FILE__), '', $file);
$file = qpath($file);
if ( is_dir($full_path) ) {
if ( 'html' === $type ) {
$v = '<li class="dir" path="'.$file
.'" onclick="load();"><span>'.$v.'</span></li>';
}
array_push($lst['dir'], $v);
} else {
if ( 'html' === $type ) {
$v = '<li class="file" path="'.$file
.'" onclick="load()"><span>'.$v.'</span></li>';
}
array_push($lst['file'], $v);
}
}
}
$lst = array_merge($lst['dir'], $lst['file']);
$lst = array_filter($lst);
$flag = $lst;
if ( 'html' === $type ) {
$flag = '<ul>'. implode('', $lst) .'</ul>';
}
return $flag;
} 关键点就是:
$bm=mb_detect_encoding($v, array('ASCII','UTF-8','GB2312','GBK','BIG5'));
if($bm=='EUC-CN')$v=iconv('GB2312', 'UTF-8', $v);
这样就能显示汉字了。
|