當前位置:首頁 » 文件管理 » php遍歷文件夾

php遍歷文件夾

發布時間: 2022-08-30 01:37:42

A. 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;
}

B. php怎麼遍歷指定目錄下的文件(可指定文件類

遍歷目錄下文件,首先獲取該目錄下的所有文件名。

$folder='./folder/';
foreach(scandir($folder)AS$value){
if($value=='.'OR$value=='..')continue;
echo'文件名:'.$value." ";
}

C. php去遍歷一個文件夾含有幾個子文件夾,並獲得文件夾的名字怎麼寫有沒有源碼例子

<?php
/**********************
一個簡單的目錄遞歸函數
第一種實現辦法:用dir返回對象
***********************/
function tree($directory)
{
$mydir = dir($directory);
echo "<ul>\n";
while($file = $mydir->read())
{
if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!=".."))
{
echo "<li><font color=\"#ff00cc\"><b>$file</b></font></li>\n";
tree("$directory/$file");
}
else
echo "<li>$file</li>\n";
}
echo "</ul>\n";
$mydir->close();
}
//開始運行

echo "<h2>目錄為粉紅色</h2><br>\n";
tree("./nowamagic");

/***********************
第二種實現辦法:用readdir()函數
************************/
function listDir($dir)
{
if(is_dir($dir))
{
if ($dh = opendir($dir))
{
while (($file = readdir($dh)) !== false)
{
if((is_dir($dir."/".$file)) && $file!="." && $file!="..")
{
echo "<b><font color='red'>文件名:</font></b>",$file,"<br><hr>";
listDir($dir."/".$file."/");
}
else
{
if($file!="." && $file!="..")
{
echo $file."<br>";
}
}
}
closedir($dh);
}
}
}
//開始運行
listDir("./nowamagic");
?>

D. 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/>';
}

E. 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>";
}
}
}
}
}

F. PHP遍歷文件夾中內容並顯示出來會顯示._文件名,請問生么原因,謝謝,或者如何過濾掉

很正常啊,這是系統自帶的兩個特殊隱藏目錄。一個.是指代當前目錄本身,一個..指代上級目錄。平時隱藏了而已。你遍歷出來不想顯示直接在判斷條件里加如果目錄等於.或者..就不輸出,直接跳過就完了

G. 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+');
}
}

H. PHP如何遍歷指定文件夾,獲取所有文件列表並生成下載鏈接

試編寫代碼如下:

<?php

$dir="D:/WWW/ftp";//指定的路徑
$sitepath='http://localhost/ftp/';
//遍歷文件夾下所有文件
if(false!=($handle=opendir($dir))){
echo"$dir目錄下的文件列表:<BR/>";
$i=0;
while(false!==($file=readdir($handle))){
if($file!="."&&$file!=".."&&!is_dir($dir.'/'.$file)){
echo'<ahref="'.$sitepath.$file.'">'.$file.'</a><br/>';
}
}
//關閉句柄
closedir($handle);
}

?>


代碼中需要提示的是:


如果是運行於互聯網上,需要考慮文件的訪問安全性。


運行截圖:


I. 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");?>

J. PHP怎麼遍歷一個文件夾下所有的文件,默認顯示第一個內容。

在 php 語言里,列出一個文件夾下所有的文件,最簡單的是使用 scandir 函數,示例如下:

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


scandir 原型定義如下:

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


第2個參數,可以將獲取的文件列表按升、降序進行排序。

熱點內容
酒商城源碼 發布:2024-10-13 01:58:54 瀏覽:135
我的世界伺服器圈地設計 發布:2024-10-13 01:46:16 瀏覽:217
配置升級到什麼型號好 發布:2024-10-13 01:38:35 瀏覽:195
面試java基礎 發布:2024-10-13 01:38:34 瀏覽:891
製作加密dvd 發布:2024-10-13 01:32:41 瀏覽:570
java批量發送簡訊 發布:2024-10-13 01:27:00 瀏覽:223
androidstring特殊 發布:2024-10-13 01:21:19 瀏覽:239
nginxphp配置 發布:2024-10-13 01:12:55 瀏覽:570
網路游戲Server編程 發布:2024-10-13 00:41:44 瀏覽:227
androidqq分組 發布:2024-10-13 00:41:09 瀏覽:20