PHP批量修改文件名稱的方法是什么樣的?
What is the method for batch modifying file names in PHP? -PHP Chinese website Q&A-What is the method to batch modify file names in PHP? -PHP Chinese website Q&A
Let’s take a look and learn.
首先判斷用戶給出的目錄是不是一個合法目錄;
我們這里只是修改狹義的文件名稱(不包括目錄),所以在程序中一定要判斷是不是目錄,如果是目錄我們就打開這個目錄——從而實現(xiàn)遍歷目錄下的所有文件。如果不是我們就用一個隨機的名稱修改原來的文件名(用隨機數(shù)做名稱其實不科學(xué),但是這不是我們的重點)。
具體的程序如下:
<?php //利用PHP目錄和文件函數(shù)遍歷用戶給出目錄的所有的文件和文件夾,修改文件名稱 function?fRename($dirname){ ?if(!is_dir($dirname)){ ?echo?"{$dirname}不是一個有效的目錄!"; ?exit(); ?} ?$handle?=?opendir($dirname); ?while(($fn?=?readdir($handle))!==false){ ?if($fn!='.'&&$fn!='..'){ ??$curDir?=?$dirname.'/'.$fn; ??if(is_dir($curDir)){ ??fRename($curDir); ??} ??else{ ??$path?=?pathinfo($curDir); ??$newname?=?$path['dirname'].'/'.rand(0,100).'.'.$path['extension']; ??rename($curDir,$newname); ??echo?$curDir.'---'.$newname."<br>"; ??} ?} ?} } //給出一個目錄名稱調(diào)用函數(shù) fRename('pl'); ?>
分析:
第4行我們用is_dir函數(shù)來判斷用戶給出的目錄是不是一個有效的目錄名稱;因為我們是學(xué)習(xí)所以寫的簡單一點如果你要放在服務(wù)器上供大家使用的話,你一定要謹慎的驗證這個輸入數(shù)據(jù)——例如,這個目錄是否允許用戶修改等等……
注意函數(shù)第9行的判斷,必須用全等判斷(PHP全等符號===三個等號,不全等!==一個嘆號兩個等號),否則如果有一個文件名稱為0(零),會導(dǎo)致程序意外終止;
第12行,如果讀取的文件是一個目錄,就在此調(diào)用函數(shù)本身,實現(xiàn)函數(shù)的遞歸;
注意第16行pathinfo函數(shù)的用法,這個函數(shù)返回一個擁有三個元素的數(shù)組三個元素分別是:
Dirname路徑的目錄名稱,basename路徑包含的文件名稱 和 extension文件的擴展名,具體這個函數(shù)的用法請參看手冊相關(guān)部分。
在程序的17行中,使用了PHP的隨機數(shù)函數(shù)rand,這是個基本的隨機函數(shù)
注意事項:一定要判斷用PHP 的readdir函數(shù)讀取的文件名稱是不是”.”和”..”這很重要!