php目錄遍歷
Ⅰ 幾種php文件夾遍歷的方法
function dirTree(){
if(!is_dir($path)) return []; $files = []; $dir = opendir($path); while($file = readdir($dir)) { if($file == '.' || $file == '..') continue; $new_path = trim($path, '/').'/'.trim($file, '/'); $files[] = $new_path; if(is_dir($new_path)){ $files = array_merge($files, $this->ergodicDir2($new_path));
}
}
closedir($dir); return $files;
}
Ⅱ php如何遍歷上一級目錄下的所有文件
<?php
function read_all_dir ( $dir )
{
$result = array();
$handle = opendir($dir);
if ( $handle )
{
while ( ( $file = readdir ( $handle ) ) !== false )
{
if ( $file != '.' && $file != '..')
{
$cur_path = $dir . DIRECTORY_SEPARATOR . $file;
if ( is_dir ( $cur_path ) )
{
$result['dir'][$cur_path] = read_all_dir ( $cur_path );
}
else
{
$result['file'][] = $cur_path;
}
}
}
closedir($handle);
}
return $result;
}
?>
Ⅲ PHP遍歷目錄獲取文件名 無限深度的目錄 如何寫這個
用遞歸,不過遞歸要有個結束
<?php
function dir_info($dir){
$dir_fo=opendir($dir);
while($file=readdir($dir_fo)){
if($file!='.' and $file!='..'){
if(is_dir($file)){
dir_info($file);
}else{
echo $file.'<br/>';
}
}
}
closedir($dir_fo);
}
dir_info('.');
?>
不過這個有點不對的事,如果是他上一個目錄的他遞歸不到,還有個函數可以,但這個多半夠了,還有一種,
<?php
function dir_info($dir,$type=''){
if($type==''){
$dirname=$dir.'/*';
}else{
$dirname=$dir.'/*.'.$type;
}
$file=glob($dirname);
foreach($file as $row){
if(is_dir($row)){
dir_info($row);
}else{
echo $row.'<br/>';
}
}
}
dir_info('.');
?>
Ⅳ 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寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾
最近剛寫的,可以遍歷指定目錄下的所有文件、文件夾、特定後綴的文件:
/**
*遍歷目錄
*@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
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。
它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,
執行效率比完全生成HTML標記的CGI要高許多;
PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
Ⅸ php如何遍歷目錄及子目錄
<?php
/*
* @src始源文件的地址
* @dest是目標文件的地址
* @file_permission目標文件的許可權
*/
function file($src, $dest, $file_permission = 0644) {
$src = str_replace('\\', '/', $src);
$src = str_replace('//', '/', $src);
$dest = str_replace('\\', '/', $dest);
$dest = str_replace('//', '/', $dest);
if (is_file($src) ) { //只能進行文件的復制/如想復制文件夾,自己寫方法吧
if(is_dir($dest)) {
if ($dest[ strlen($dest)-1 ] != '/') {
$__dest = $dest . "/";
}
$__dest .= basename($src);
} else {
$__dest = $dest;
}
$res = ($src, $__dest);
chmod($__dest, $file_permission);
}
}
function procrss_($dir, $file) {
$_exclude = array('.', '..', '.svn');
$d = dir($dir);
while (false !== ($entry = $d->read())) {
file($file, $dir. '/' . $entry);
if(!in_array($entry, $_exclude)) {
if(is_dir($dir . '/'.$entry)) {
procrss_($dir . '/'.$entry); //遞歸讀文件
} else {
echo $entry . "\n";
}
}
}
$d->close();
}
procrss_($newdir, 'Wring.txt');
process_你總要調用執行復制的函數吧
Ⅹ php 能不能遍歷上一級目錄的文件
可以,代碼如下:<?php
function read_all_dir ( $dir )
{
$result = array();
$handle = opendir($dir);
if ( $handle )
{
while ( ( $file = readdir ( $handle ) ) !== false )
{
if ( $file != '.' && $file != '..')
{
$cur_path = $dir . DIRECTORY_SEPARATOR . $file;
if ( is_dir ( $cur_path ) )
{
$result['dir'][$cur_path] = read_all_dir ( $cur_path );
}
else
{
$result['file'][] = $cur_path;
}
}
}
closedir($handle);
}
return $result;
}
?>