本文目录一览:
- 1、php写一个函数,能够遍历一个文件夹下的所有文件和子文件夹
- 2、php怎么遍历指定目录下的文件(可指定文件类
- 3、PHP遍历输出文件夹内的所有文件用递归算法?
- 4、PHP怎么遍历一个文件夹下所有的文件,默认显示第一个内容。
- 5、php 循环遍历文件夹下面的所有目录及文件并且每个文件都写入一句话
php写一个函数,能够遍历一个文件夹下的所有文件和子文件夹
最近刚写的,可以遍历指定目录下的所有文件、文件夹、特定后缀的文件:
/**
* 遍历目录
* @param string $dir 绝对/相对路径
* @param string $filter 默认*返回所有文件及文件夹,*.php仅返回php文件,如果$patten为GLOB_BRACE可实现多文件筛选,如*.{php,html},返回php和html文件
* @param const $patten 默认GLOB_BRACE,可选:GLOB_ONLYDIR,更多参数请参考手册
* @param string/bool $nocache 防止本次调用的结果缓存上次的结果,如果一个脚本仅调用一次本函数,则不用管,否则得设个值
* @return array
*/
function globdir($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;
}
php怎么遍历指定目录下的文件(可指定文件类
遍历目录下文件,首先获取该目录下的所有文件名。
$folder = './folder/';
foreach (scandir($folder) AS $value) {
if ($value == '.' OR $value == '..') continue;
echo '文件名 : ' . $value . "\n";
}
PHP遍历输出文件夹内的所有文件用递归算法?
一般来说,类似这种遍历输出所有文件,大多采用递归算法,这样程序显得比较简洁,其实际执行效率来说,并不见得比其他方法更好。
以下是示例:
function file_list($path)
{
if ($handle = opendir($path))//打开路径成功
{
while (false !== ($file = readdir($handle)))//循环读取目录中的文件名并赋值给$file
{
if ($file != "." $file != "..")//排除当前路径和前一路径
{
if (is_dir($path."/".$file))
{
// echo $path.": ".$file."br";//去掉此行显示的是所有的非目录文件
file_list($path."/".$file);
}
else
{
echo $path.": ".$file."br";
}
}
}
}
}
PHP怎么遍历一个文件夹下所有的文件,默认显示第一个内容。
在 php 语言里,列出一个文件夹下所有的文件,最简单的是使用 scandir 函数,示例如下:
?php
$dir = '/tmp';
$files1 = scandir($dir);
print_r($files1);
?
scandir 原型定义如下:
array scandir ( string $directory [, int $sorting_order [, resource $context ]] )
第2个参数,可以将获取的文件列表按升、降序进行排序。
php 循环遍历文件夹下面的所有目录及文件并且每个文件都写入一句话
/****************************
* 获取目录下的所有文件
* [$dir] 文件夹路径
****************************/
function deepScanDir($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);
}
return array (
'dir' = $dirArr,
'file' = $fileArr
);
}
/****************************
* 将内容写入文件
* [$filename] 文件路径
* [$contents] 文件内容
* [$type] 读写类型
****************************/
function writeFileContents($filename, $contents, $type='a') {
if (!($fd = fopen($filename, $type)))
return FALSE;
if (!fwrite($fd, $contents."\n")) {
fclose($fd);
return FALSE;
}
fclose($fd);
return true;
}
#示例:
$dir = "/usr/local/php/test/";
$dirFiles = deepScanDir($dir);
if(!empty($dirFiles['file'])){
foreach($dirFiles['file'] as $file){
writeFileContents($file, "Hello", $type='a+');
}
}