當前位置:首頁 » 編程語言 » php遍歷文件夾下的文件

php遍歷文件夾下的文件

發布時間: 2022-05-15 23:12:21

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 遍歷文件夾文件問題

<?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 />'
}
?>

執行腳本結果類似下圖

⑶ PHP遍歷文件及文件夾

<?php
$dir = 'F:\\game';

function read_dir_all($dir) {
$ret = array('dirs'=>array(), 'files'=>array());
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if($file != '.' && $file !== '..') {
$cur_path = $dir . DIRECTORY_SEPARATOR . $file;
if(is_dir($cur_path)) {
$ret['dirs'][$cur_path] = read_dir_all($cur_path);
} else {
$ret['files'][] = $cur_path;
}
}
}
closedir($handle);
}
return $ret;
}

$p = read_dir_all($dir);
echo '<pre>';
var_mp($p);
echo '</pre>';
?>

⑷ 寫一個php函數,可以遍歷目錄下面的所有文件及子文件夾並修改後綴名

可以用遞歸的方式,還有別的方式能實現

function my_dir($dir)
{
$files = array();
if (@$handle = opendir($dir)) {
while (($file = readdir($handle)) !== false) {
if ($file != ".." && $file != ".") {
if (is_dir($dir . "/" . $file)) {
$files[$file] = my_dir($dir . "/" . $file);
} else {
$files[] = $file;
}

}
}
closedir($handle);
return $files;
}
}

⑸ 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遍歷輸出文件夾內的所有文件用遞歸演算法

一般來說,類似這種遍歷輸出所有文件,大多採用遞歸演算法,這樣程序顯得比較簡潔,其實際執行效率來說,並不見得比其他方法更好。

以下是示例:

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怎麼遍歷指定目錄下的文件(可指定文件類

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

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

⑻ 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讀取目錄下所有文件內容並顯示

<?php

function printFile($filepath)

{

//substr(string,start,length)函數返回字元串的一部分;start規定在字元串的何處開始 ;length規定要返回的字元串長度。默認是直到字元串的結尾。

//strripos(string,find,start)查找 "php" 在字元串中最後一次出現的位置; find為規定要查找的字元;start可選。規定開始搜索的位置

//讀取文件後綴名

//$filetype = substr ( $filename, strripos ( $filename, "." ) + 1 );

//判斷是不是以txt結尾並且是文件

#if ($filetype == "txt" && is_file ( $filepath . "/" . $filename ))

if ( is_file ( $filepath))

{

$filename=iconv("gb2312","utf-8",$filepath);

echo $filename."內容如下:"."<br/>";

$fp = fopen ( $filepath, "r" );//打開文件

#while (! feof ( $f )) //一直輸出直到文件結尾

$i = 1;

while ($i < 10)

{

$line = fgets ( $fp );

echo $line."<br/>";

$i = $i +1;

}

fclose($fp);

}

}

(此處空一行)

function readFileRecursive($filepath)

{

if (is_dir ( $filepath )) //判斷是不是目錄

{

$dirhandle = opendir ( $filepath );//打開文件夾的句柄

if ($dirhandle)

{

//判斷是不是有子文件或者文件夾

while ( ($filename = readdir ( $dirhandle ))!= false )

{

if ($filename == "." or $filename == "..")

{

//echo "目錄為「.」或「..」"."<br/>";

continue;

}

//判斷是否為目錄,如果為目錄遞歸調用函數,否則直接讀取列印文件

if(is_dir ($filepath . "/" . $filename ))

{

readFileRecursive($filepath . "/" . $filename);

}

else

{

//列印文件

printFile($filepath . "/" . $filename);

echo "<br/>";

}

}

closedir ( $dirhandle );

}

}

else

{

printFile($filepath . "/" . $filename);

return;

}

}

(此處空一行)

header("content-type:text/html;charset=utf-8");

#echo "Hello World"."<br/>";

$filepath = "C:/phpStudy/PHPTutorial/WWW/test/results"; //想要讀取的目錄

readFileRecursive($filepath )

?>

(9)php遍歷文件夾下的文件擴展閱讀:

php還可以讀取文件夾下所有圖片,方法如下

hostdir=dirname(__FILE__).'/data/upload/admin/20170517/'; //要讀取的文件夾

(此處空一行)

$url = '/data/upload/admin/20170517/'; //圖片所存在的目錄

(此處空一行)

$filesnames = scandir($hostdir); //得到所有的文件

(此處空一行)

// print_r($filesnames);exit;

//獲取也就是掃描文件夾內的文件及文件夾名存入數組 $filesnames

(此處空一行)

$www = 'http://www.***.com/'; //域名

(此處空一行)

foreach ($filesnames as $name) {

$aurl= "<img width='100' height='100' src='".$www.$url.$name."' alt = '".$name."'>"; //圖片

echo $aurl . "<br/>"; //輸出他

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

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

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


scandir 原型定義如下:

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


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

熱點內容
小程序全套源碼 發布:2024-04-23 15:07:58 瀏覽:715
伺服器業務ip地址怎麼配 發布:2024-04-23 15:03:05 瀏覽:989
銅排折彎最簡單的演算法 發布:2024-04-23 14:48:53 瀏覽:22
我的世界伺服器倒計時清理指令 發布:2024-04-23 14:21:14 瀏覽:466
五班資料庫 發布:2024-04-23 13:59:57 瀏覽:797
在c語言中數字029是一個 發布:2024-04-23 13:52:13 瀏覽:740
我的世界電腦版伺服器怎麼禁足 發布:2024-04-23 13:24:49 瀏覽:547
y壓縮包 發布:2024-04-23 12:41:20 瀏覽:167
內網互相訪問 發布:2024-04-23 12:36:23 瀏覽:320
安卓國際服在哪裡看賬號 發布:2024-04-23 12:30:29 瀏覽:299