PHP 如何遍历一个目录 要求刚出来只显示第一级的文件夹和文件 当点击了文件夹的时候显示下级文件 要代码! PHP怎么遍历一个文件夹下所有的文件,默认显示第一个内容。

\u3010PHP\u904d\u5386\u5b50\u6587\u4ef6\u5939\u4e0b\u7684\u6587\u4ef6\u3011\u4ee5\u4e0b\u4ee3\u7801\u4e3a\u4ec0\u4e48\u53ea\u904d\u4e86\u4e8c\u7ea7\u76ee\u5f55\uff08f:/php\u4e0ef:/php/html\uff09\u4e0b\u7684\u6587\u4ef6\uff1f

scandir()

\u5728 php \u8bed\u8a00\u91cc\uff0c\u5217\u51fa\u4e00\u4e2a\u6587\u4ef6\u5939\u4e0b\u6240\u6709\u7684\u6587\u4ef6\uff0c\u6700\u7b80\u5355\u7684\u662f\u4f7f\u7528 scandir \u51fd\u6570\uff0c\u793a\u4f8b\u5982\u4e0b\uff1a

scandir \u539f\u578b\u5b9a\u4e49\u5982\u4e0b\uff1a
array scandir ( string $directory [, int $sorting_order [, resource $context ]] )\u7b2c2\u4e2a\u53c2\u6570\uff0c\u53ef\u4ee5\u5c06\u83b7\u53d6\u7684\u6587\u4ef6\u5217\u8868\u6309\u5347\u3001\u964d\u5e8f\u8fdb\u884c\u6392\u5e8f\u3002

把变量填充到模板就自己搞定了,难道遇到问题,就什么都要别人给你搞定,自己能搞定的,就自己搞定。
<?php
error_reporting(E_ALL ^ E_NOTICE);
@header("Content-Type: text/html; charset=utf-8");

if($_GET['rootdir']){
$rootdir = $_GET['rootdir'];
}else{
$query = trim($_SERVER['QUERY_STRING'])!=''?queryCode($_SERVER['QUERY_STRING']):array();
$rootdir = $query['rootdir'];
print_r($query);
echo '<hr>';

$showpath = $query['showpath'];//选择的路径
$showpathData = explode('/',$showpath);
$showpathData = array_diff($showpathData, array(''));
$showpathData = array_values($showpathData);
print_r($showpathData);
echo '<hr>';
}
(!$rootdir || !is_dir($rootdir)) && $rootdir = dirname(__FILE__);//定义默认根路径
$levl=0;
$nowDir = $query['rootdir'].$query['showpath'];
!$nowDir && $nowDir = $rootdir;
$queryData = array();
$queryData['rootdir'] = $rootdir;

function read_dir($path){
strpos($path,'..') !== false && exit('Forbidden');
$return=array();
$return['dirs']=array();
$return['files']=array();
if(is_dir($path)){
$childs=@opendir($path);
while($child=@readdir($childs)){
if($child!="." && $child!=".." && $child!="" && $child!="Thumbs.db"){
if(is_dir("$path/$child")){
$return['dirs'][] = $child;
}else{
$return['files'][] = $child;
}
}
}
@closedir($childs);
}
count($return['dirs']) && sort($return['dirs']);
count($return['files']) && sort($return['files']);
return $return;
}
function levltext($levl){
$text=' ';
for($i=0;$i<$levl;$i++){
$text.='|===';
}
return $text;
}
function queryCode($query,$key=''){
//因为要把实际路径用作参数来传输,为了安全,所以将参数加密
!$key && $key = '******';//加密密匙
//json_encode,json_decode需要PHP 5 >= 5.2.0
if(is_array($query)){
return StrCode(json_encode($query),'ENCODE',$key);
}else{
return json_decode(StrCode($query,'DECODE',$key),TRUE);
}
}
function StrCode($string,$action='ENCODE',$key=''){
//base64+$key加解密
$string.="";
$action != 'ENCODE' && $string = base64_decode($string);
$code = '';
$key = md5($key);
$keylen = strlen($key); $strlen = strlen($string);
for ($i=0;$i<$strlen;$i++) {
$k = $i % $keylen;
$code .= $string[$i] ^ $key[$k];
}
return ($action!='DECODE' ? base64_encode($code) : $code);
}
function printTable($ePath=''){
global $showpathData,$queryData,$levl,$rootdir;
$dfData = read_dir($rootdir.'/'.$ePath);
$_tDir = $showpathData[$levl];
$levl++;
$levltext = levltext($levl);
foreach($dfData['dirs'] as $_dir){
$queryData['showpath'] = $ePath.'/'.$_dir;
$queryString = queryCode($queryData);
$ext = ($_dir == $_tDir)?'--':'++';
?>
<tr>
<td><?php echo $levltext.$ext;?><a href="?<?php echo $queryString;?>"><?php echo $_dir;?></a></td>
</tr>
<?php
if($_dir == $_tDir){
printTable($ePath.'/'.$_dir);
}
}
foreach($dfData['files'] as $_file){
?>
<tr>
<td><?php echo $levltext;?> <?php echo $_file;?></td>
</tr>
<?php
}
}
//=======================================================================
print <<<EOT
<form action='' method=get>
当前打开:{$nowDir}<br>
主路径:<input value="$rootdir" name='rootdir' size=70>
<input type=submit>
</form>
<hr>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td> <b>路径</b></td>
</tr>
EOT;
printTable();
print <<<EOT
</table>
EOT;
?>

有 asp 的要看看吗?

扩展阅读:一张图看懂免疫组化 ... ping 命令做成批处理 ... php 读取目录下文件夹 ... php遍历目录下所有文件 ... php用类 还是 函数好 ... 图推遍历规律 ... p d c循环正确的描述是 ... php删除目录下所有文件 ... php网站表单生成器官网 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网