2013-01-19 150 views
0

該腳本的用途是更改電子商務網站目錄中圖像列表的名稱。因此,特別是當腳本是rand時,用戶將鍵入一個單詞或短語,他們希望將一組文件或一組文件作爲前綴。該腳本將遍歷每個文件,更改前綴並追加從零開始的下一個可用編號。更改目錄中圖像的名稱並顯示更改後的文件名

我想在頁面上向用戶顯示/渲染哪些文件已被更改。此時腳本運行時會顯示目錄中的當前文件,然後列出目錄中已更改的文件及其名稱。

我怎樣才能得到文件列表只顯示腳本完成處理新名稱時顯示?

爲什麼腳本沒有在文件名後附加適當的增量數?它重命名文件的順序如下: abc0.jpg abc1.jpg abc10.jpg abc11.jpg abc12.jpg abc13.jpg

<?php 
    $display_file_list; 

    //Allow user to put choose name 
    if (isset($_POST['file_prefix'])){ 

    $the_user_prefix = $_POST['file_prefix']; 


    //open the current directory change this to modify where you are looking 
    $dir = opendir('.'); 

    $i=0; 

    //Loop though all the files in the directory 
    while(false !==($file = readdir($dir))) 
    { 

    //This is the way we would like the page to function 

    //if the extention is .jpg 
    if(strtolower(pathinfo($file, PATHINFO_EXTENSION)) =='jpg') 
    { 
     //Put the JPG files in an array to display to the user 
     $display_file_list[]= $file; 

     //Do the rename based on the current iteration 
     $newName = $the_user_prefix.$i . '.jpg'; 
     rename($file, $newName); 
     //increase for the next loop 
     $i++; 
    } 

     } 



    //close the directory handle 
    closedir($dir); 

     }else{ 

    echo "No file prefix provided"; 
    } 




?> 

    <html> 
    <body> 
    <form action="<?=$_SERVER['PHP_SELF']?>" method="POST"> 
    <input type="text" name="file_prefix"><br> 
    <input type="submit" value="submit" name="submitMe"> 
    </form> 
    </body> 

</html> 

<?php 
    foreach ($display_file_list as $key => $value) { 
      echo $value. "<br>"; 
     } 


?> 

回答

0

「我怎樣才能得到文件列表只顯示時該腳本已完成處理新名稱?「

我認爲這會適合你;

$path = "path/to/files"; 
$files = glob("{$path}/*.jpg"); 
$files_renamed = array(); 
foreach ($files as $i => $file) { 
    $name = "{$path}/{$prefix}{$i}.jpg"; 
    if (true === rename($file)) { 
     $files_renamed[] = $name; 
    } 
} 
print_r($files_renamed);