A. php怎么遍历一个文件夹下所有的文件,默认显示第一个内容。

在 php 语言里,列出一个文件夹下所有的文件,最简单的是使用 scandir 函数,示例如下:

<?php
$dir='/tmp';
$files1=scandir($dir);
print_r($files1);
?>


scandir 原型定义如下:

arrayscandir(string$directory[,int$sorting_order[,resource$context]])


第2个参数,可以将获取的文件列表按升、降序进行排序。

B. php写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

最近刚写的,可以遍历指定目录下的所有文件、文件夹、特定后缀的文件:

/**
*遍历目录
*@paramstring$dir绝对/相对路径
*@paramstring$filter默认*返回所有文件及文件夹,*.php仅返回php文件,如果$patten为GLOB_BRACE可实现多文件筛选,如*.{php,html},返回php和html文件
*@paramconst$patten默认GLOB_BRACE,可选:GLOB_ONLYDIR,更多参数请参考手册
*@paramstring/bool$nocache防止本次调用的结果缓存上次的结果,如果一个脚本仅调用一次本函数,则不用管,否则得设个值
*@returnarray
*/
functionglobdir($dir,$filter='*',$patten=GLOB_BRACE,$nocache=null){
static$file_arr=array();
isset($nocache)&&$file_arr=array();
if(!is_dir($dir))return;
if($patten==GLOB_ONLYDIR){
$code='if(is_dir($file)){$file_arr[]=$file;globdir($file,"*",GLOB_ONLYDIR);}';
}else{
$code='is_file($file)?$file_arr[]=$file:globdir($file,"'.$filter.'",'.$patten.');';
}
array_walk(glob("{$dir}/{$filter}",$patten),create_function('$file,$k,$file_arr',$code),&$file_arr);
if($filter!='*'){
array_walk(glob("{$dir}/*",GLOB_ONLYDIR),create_function('$dir,$k,$param','list($filter,$patten)=explode("|",$param);globdir($dir,$filter,$patten);'),"{$filter}|{$patten}");
}
return$file_arr;
}

C. 几种php文件夹遍历的方法

function dirTree(){
if(!is_dir($path)) return []; $files = []; $dir = opendir($path); while($file = readdir($dir)) { if($file == '.' || $file == '..') continue; $new_path = trim($path, '/').'/'.trim($file, '/'); $files[] = $new_path; if(is_dir($new_path)){ $files = array_merge($files, $this->ergodicDir2($new_path));
}
}
closedir($dir); return $files;
}

D. php如何遍历目录及子目录

<?php
/*
* @src始源文件的地址
* @dest是目标文件的地址
* @file_permission目标文件的权限
*/
function file($src, $dest, $file_permission = 0644) {
$src = str_replace('\\', '/', $src);
$src = str_replace('//', '/', $src);
$dest = str_replace('\\', '/', $dest);
$dest = str_replace('//', '/', $dest);

if (is_file($src) ) { //只能进行文件的复制/如想复制文件夹,自己写方法吧
if(is_dir($dest)) {
if ($dest[ strlen($dest)-1 ] != '/') {
$__dest = $dest . "/";
}

$__dest .= basename($src);
} else {
$__dest = $dest;
}

$res = ($src, $__dest);
chmod($__dest, $file_permission);
}
}

function procrss_($dir, $file) {
$_exclude = array('.', '..', '.svn');
$d = dir($dir);

while (false !== ($entry = $d->read())) {
file($file, $dir. '/' . $entry);
if(!in_array($entry, $_exclude)) {
if(is_dir($dir . '/'.$entry)) {
procrss_($dir . '/'.$entry); //递归读文件
} else {
echo $entry . "\n";
}
}
}
$d->close();
}

procrss_($newdir, 'Wring.txt');

process_你总要调用执行复制的函数吧

E. php 遍历文件夹文件问题

<?php
//脚本根目录
define
(
'S_ROOT',
dirname
(
__FILE__
)
.
DIRECTORY_SEPARATOR
);
//递归查找搜索文件
function
glob_recursive($pattern,
$flags
=
0)
{

$files
=
glob
(
$pattern,
$flags
);

foreach
(
glob
(
dirname
(
$pattern
)
.
'/*',
GLOB_ONLYDIR
|
GLOB_NOSORT
)
as
$dir
)
{

$files
=
array_merge
(
$files,
glob_recursive
(
$dir
.
'/'
.
basename
(
$pattern
),
$flags
)
);

}

return
$files;
}
//如果搜索所有文件可用
S_ROOT.'image/'."*.*"
//如果只是某一类文件可以
S_ROOT.'image/'."*.gif"
$filelist
=
glob_recursive(S_ROOT.'image/'."*.gif");
foreach
($filelist
as
$file)
{

echo
'目录
'.dirname($file).'
路径
'.
$file.'<br
/>';
}
?><p>执行脚本结果类似下图</p>
<p></p>

F. php怎样遍历远程文件夹下的文件

window是用的GB2312的编码,你的php文件应该用的是UTF-8,所以正如你写的那样,先要转换编码$dir=iconv("utf-8","gb2312",$dir);
但你别忘了,你用的是UTF-8的编码,所以你第六行写错了,把GB2312转换为UTF-8搞倒了吧
123456789101112131415<?phpfunction refresh($dir){ $dir=iconv("utf-8","gb2312",$dir); if ($headle=opendir($dir)){ while ($file=readdir($headle)){ $file=iconv("gb2312","utf-8",$file); if ($file!='.' && $file!='..'){ echo "文件".$file."在文件夹".$dir."下<br />"; } } closedir($headle); }}refresh("D:/AppServ/www/test");?>

G. php中写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

if ( $handle = opendir($dir) ) {【开启一个 代表该目录 的句柄handle,句柄理解成一个对象就行】
while ( ($file = readdir($handle)) !== false ) {【尝试从目录中读一个文件名,能读出文件名就继续循环,读出false值就终止循环。整体上就是遍历文件名】
if ( $file != ".." && $file != "." ) {【排除等于1点.和2点的..,排除上级目录和当前目录】
if ( is_dir($dir . "/" . $file) ) {【如果文件名是目录就...】

H. php遍历输出文件夹下所有txt文件

可以,使用glob函数可以非常容易搞定,支持通配符。

<?php
header('Content-type:text/html;charset=utf-8');
$i=1;
foreach(glob('/file/*.txt')as$txt)
{
echo'第'.$i.'个文件'.basename($txt).'的内容是:';
echofile_get_contents($txt);
$i++;
echo'<hr/>';
}

I. php 循环遍历文件夹下面的所有目录及文件并且每个文件都写入一句话

/****************************
*获取目录下的所有文件
*[$dir]文件夹路径
****************************/
functiondeepScanDir($dir){
$fileArr=array();
$dirArr=array();
$dir=rtrim($dir,'//');
if(is_dir($dir)){
$dirHandle=opendir($dir);
while(false!==($fileName=readdir($dirHandle))){
$subFile=$dir.DIRECTORY_SEPARATOR.$fileName;
if(is_file($subFile)){
$fileArr[]=$subFile;
}
elseif(is_dir($subFile)&&str_replace('.','',$fileName)!=''){
$dirArr[]=$subFile;
$arr=deepScanDir($subFile);
$dirArr=array_merge($dirArr,$arr['dir']);
$fileArr=array_merge($fileArr,$arr['file']);
}
}
closedir($dirHandle);
}
returnarray(
'dir'=>$dirArr,
'file'=>$fileArr
);
}
/****************************
*将内容写入文件
*[$filename]文件路径
*[$contents]文件内容
*[$type]读写类型
****************************/
functionwriteFileContents($filename,$contents,$type='a'){
if(!($fd=fopen($filename,$type)))
returnFALSE;

if(!fwrite($fd,$contents." ")){
fclose($fd);
returnFALSE;
}

fclose($fd);
returntrue;
}
#示例:
$dir="/usr/local/php/test/";
$dirFiles=deepScanDir($dir);
if(!empty($dirFiles['file'])){
foreach($dirFiles['file']as$file){
writeFileContents($file,"Hello",$type='a+');
}
}