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>
Ⅱ PHP遍歷並列印指定目錄下所有文件實例
這篇文章主要介紹了PHP遍歷並列印指定目錄下所有文件實例,需要的朋友可以參考下
代碼如下:
<?php
//功能:遍歷並列印指定目錄下所有文件
function
scan_dir($dir_name,$dir_flag=1)
{
static
$FILE_COUNT=1;
//記錄文件數目
初值為1
目錄名稱不記
$FILE_COUNT--;
//每調用一次scan_dir()函數自減1
@$dir_handle=opendir($dir_name);
//抑制錯誤信息顯示
便於自定義錯誤顯示
if(!$dir_handle)
die("目錄打開錯誤!");
while(false!==($filename=readdir($dir_handle)))
//文件名為‘0'時,readdir返回
FALSE,判斷返回值是否不全等
{
$flag=$dir_flag;
//古怪的
is_dir($filename)
!
$filename這個路徑必須能夠尋到!當$filename不存在或者不是目錄時返回false
if($filename!='.'&&$filename!='..')
{
$FILE_COUNT++;
//不記錄當前路徑和上一級路徑
while($flag>0&&--$flag)
//負數仍為真
echo
'
';
if(is_dir($dir_name.$filename))
//判斷
是否為一個目錄
{
echo
'<strong>'."<a
href=".$dir_name.$filename.">".$filename."</a></strong><br>";
scan_dir($dir_name.$filename.'/',$dir_flag+1);
//$dir_flag標志目錄樹層次
}
else
{
echo
"<a
href=".$dir_name.$filename.">".$filename."</a><br>";
}
}
}
closedir($dir_handle);
//關閉目錄句柄
echo
"文件總數:".$FILE_COUNT.'<br>';
}
scan_dir('D:wampwwwtestlamp61');
//指定的文件路徑
?>
Ⅲ php怎麼遍歷指定目錄下的文件(可指定文件類
遍歷目錄下文件,首先獲取該目錄下的所有文件名。
$folder='./folder/';
foreach(scandir($folder)AS$value){
if($value=='.'OR$value=='..')continue;
echo'文件名:'.$value." ";
}
Ⅳ 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 在建立數組中可以指定鍵值,即 array('first'=>'網路','secode'=>'谷歌')。那麼你可以在建立這個數組時,將每個元素的內容改成 B_A 形式,這個很簡單吧,截取字元串後再合並就可以實現。而每個元素的鍵名(注意,是鍵名)還是 A_B。生成數組後,對數組排序。這時它是按 B_A 來排序的,也就是說鍵值的內容就是你想要的結果。如果還需要獲取它所對應的原來文件名,需要使用 array_keys() 函數來返回。該函數的具體使用方法,請參考 PHP 中文手冊。 希望以上可以給您幫助。
Ⅵ 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+');
}
}
Ⅶ 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;
}
Ⅷ 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);
}
?>
代碼中需要提示的是:
如果是運行於互聯網上,需要考慮文件的訪問安全性。
運行截圖:
Ⅸ 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/>';
}