PHP 支持中文目录和文件的的遍历
在使用 readdir() 遍历指定目录时,使中文目录和文件名都正常显示需要使用 iconv() 进行文件编码转换:
1 <?php 2 3 header("Content-type:text/html;charset=utf-8"); 4 5 $num = 0; 6 $dirname = ‘practise‘; 7 8 $dirname = iconv( ‘utf-8‘, ‘gb2312‘,$dirname ); 9 10 $dir_handle = opendir($dirname); 11 12 echo ‘<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">‘; 13 echo ‘<caption><h2>目录‘.$dirname.‘下面的内容</h2></caption>‘; 14 echo ‘<tr align="left" background="#ccc">‘; 15 echo ‘<th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th></tr>‘; 16 17 while($file = readdir($dir_handle)){ 18 19 $file1=iconv(‘gb2312‘,‘utf-8‘,$file); 20 21 $dirFile = $dirname."/".$file; 22 23 $bgcolor = $num++%2==0?‘#fff‘:‘#ccc‘; 24 echo ‘<tr bgcolor=‘.$bgcolor.‘>‘; 25 echo ‘<td>‘.$file1.‘</td>‘; 26 echo ‘<td>‘.filesize($dirFile).‘</td>‘; 27 echo ‘<td>‘.filetype($dirFile).‘</td>‘; 28 echo ‘<td>‘.date("Y-n-t",filemtime($dirFile)).‘</td>‘; 29 echo ‘</tr>‘; 30 } 31 32 echo ‘</table>‘; 33 closedir($dir_handle); 34 35 echo ‘在<b>‘.$dirname.‘</b>目录下的子目录和文件共有<b>‘.$num.‘</b>个‘;
在页面中显示:
目录practise下面的内容
文件名 | 文件大小 | 文件类型 | 修改时间 |
---|---|---|---|
. | 0 | dir | 2014-10-31 |
.. | 0 | dir | 2014-10-31 |
js | 0 | dir | 2014-10-31 |
mysql | 0 | dir | 2014-10-31 |
php | 0 | dir | 2014-10-31 |
想一点记一点.txt | 1975 | file | 2013-6-30 |
正则 | 0 | dir | 2014-10-31 |
在practise目录下的子目录和文件共有7个
否则显示:
目录practise下面的内容
文件名 | 文件大小 | 文件类型 | 修改时间 |
---|---|---|---|
. | 0 | dir | 2014-10-31 |
.. | 0 | dir | 2014-10-31 |
js | 0 | dir | 2014-10-31 |
mysql | 0 | dir | 2014-10-31 |
php | 0 | dir | 2014-10-31 |
??????????.txt | 1975 | file | 2013-6-30 |
???? | 0 | dir | 2014-10-31 |
在practise目录下的子目录和文件共有7个
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。