首页 > 其他 > 网站日记>正文

php遍历windows系统文件时汉字不显示的处理方法

提示: 阅读权限:公开  

直接上代码:

/获取一个目录下的文件列表
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);


这样就能显示汉字了。

上一篇:php中利用strrev函数加密示范

下一篇:帝国cms7.2之tags列表页求信息数的显示

tags: php 遍历 windows系统

返回首页

相关

热门

站内直通车

[!--temp.bottomnav--]
返回顶部