本文目錄一覽:
- 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+’);
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/286419.html