本文執行個體講述了PHP批量修改檔案名稱的方法。分享給大家供大家參考,具體如下:
在這裡我們利用一個戰地自己寫的一個例子來具體分析一下利用PHP批量修改檔案名稱的思路和注意事項。
從這個例子裡你將會看到,PHP如何判斷一個路徑是不是目錄,如何用PHP取得路徑中的檔案名稱和檔案的副檔名,隨機函數rand的基本應用,以及這個程式的核心內容遞迴函式的基本應用。
程式功能:利用PHP目錄和檔案函數遍曆使用者給出目錄的所有的檔案和檔案夾,修改檔案名稱;
首先判斷使用者給出的目錄是不是一個合法目錄;
我們這裡只是修改狹義的檔案名稱(不包括目錄),所以在程式中一定要判斷是不是目錄,如果是目錄我們就開啟這個目錄——從而實現遍曆目錄下的所有檔案。如果不是我們就用一個隨機的名稱修改原來的檔案名稱(用隨機數做名稱其實不科學,但是這不是我們的重點)。
具體的程式如下:
<?php//利用PHP目錄和檔案函數遍曆使用者給出目錄的所有的檔案和檔案夾,修改檔案名稱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>"; } } }}//給出一個目錄名稱調用函數fRename('pl');?>
程式分析:
第4行我們用is_dir函數來判斷使用者給出的目錄是不是一個有效目錄名稱;因為我們是學習所以寫的簡單一點如果你要放在伺服器上供大家使用的話,你一定要謹慎的驗證這個輸入資料——例如,這個目錄是否允許使用者修改等等……
注意函數第9行的判斷,必須用全等判斷(PHP全等符號===三個等號,不全等!==一個歎號兩個等號),否則如果有一個檔案名稱為0(零),會導致程式意外終止;
第12行,如果讀取的檔案是一個目錄,就在此調用函數本身,實現函數的遞迴;
注意第16行pathinfo函數的用法,這個函數返回一個擁有三個元素的數組三個元素分別是:
Dirname路徑的目錄名稱,basename路徑包含的檔案名稱 和 extension檔案的副檔名,具體這個函數的用法請參看手冊相關部分。
在程式的17行中,使用了PHP的隨機數函數rand,這是個基本的隨機函數
注意事項:一定要判斷用PHP 的readdir函數讀取的檔案名稱是不是”.”和”..”這很重要,為什嗎?你可以試試看呢!