PALMisLIFE 討論區

搜索
鹹魚爸魅力四射舞蹈教室
查看: 2278|回復: 0
打印 上一主題 下一主題

[交流] 專輯檔名整理 PHP Script

[複製鏈接]

104

主題

4

好友

1429

積分

羊毛大亨

該用戶從未簽到

文章
1533
跳轉到指定樓層
1#
發表於 2004-12-14 16:13 |只看該作者 |正序瀏覽
有一些網路來的檔案在硬碟裡面,每次手動改名改到很煩,手動又花時間,於是用了點時間作了一個 PHP script,看看大家有沒有可能有需要。
這個 script 會產生一個 filename.bat,你可以用 notepad 打開看看結果是否符合預期,如果是的話,用檔案總管雙擊  filename.bat 下去,漂漂亮亮的檔名就整理好了。
如有任何建議也很歡迎。
filename.cmd,需要修改路徑指向到你的 php.exe,另外要載入 iconv:

  1. "D:\apache\php-4.3.9\php.exe" -f filename.php
複製代碼


filename.php(請注意:內容需要轉為 utf8):

  1. <?php

  2. if ($handle = opendir('.')) {

  3.         $mStr = "";

  4.         $mAryMatch =   array("[","]","album","verycd.com","專輯","(mp3)",".-.","..","...","....","_","(ape)","cd1","cd2","cd3","cd4","cd5","cd6");
  5.         $mAryReplace = array(""     ,""     ,""          ,""    ,""     ," - ","." ,"."  ,"."   ," ","ape"  ,"d1" ,"d2" ,"d3" ,"d4" ,"d5" ,"d6");

  6.         while (false !== ($file = readdir($handle))) {
  7.                 $file = iconv('big5','UTF-8//TRANSLIT',$file);
  8.                 $fileTemp = $file;
  9.                 $fileTemp2 = "";
  10.                 $fileTemp = strtolower($fileTemp);
  11.                 $fileTemp = str_replace($mAryMatch, $mAryReplace, $fileTemp);

  12.                 //$mAryTemp = explode(".", $fileTemp);
  13.                 //$mAryTemp = split("\.", $fileTemp);
  14.                 $mAryTemp = preg_split ("/[ ,.]+/", $fileTemp);

  15.                 for ($mI = 0 ; $mI < count($mAryTemp) ; $mI++) {

  16.                         // 附檔名前要加點
  17.                         if ($mI == count($mAryTemp) - 1) {
  18.                                 $fileTemp2 .= ".";
  19.                         }

  20.                         // 附檔名不處理大小寫
  21.                         // 特殊字不處理大小寫
  22.                         $mAryLower = array("the", "of", "and");
  23.                         if ( ($mI == count($mAryTemp) - 1) || (in_array($mAryTemp[$mI], $mAryLower)) ) {
  24.                                 $fileTemp2 .= $mAryTemp[$mI];
  25.                         // 遇到 ape 轉為大寫 APE
  26.                         } else if ($mAryTemp[$mI] == "ape") {
  27.                                 $fileTemp2 .= strtoupper($mAryTemp[$mI]);
  28.                         // 其他的都字頭字母大寫
  29.                         } else {
  30.                                 $fileTemp2 .= ucfirst($mAryTemp[$mI]);
  31.                         }

  32.                         // 還沒結束前要加空白隔開
  33.                         if ($mI != count($mAryTemp) - 1 && $mI != count($mAryTemp) - 2) {
  34.                                 $fileTemp2 .= " ";
  35.                         }
  36.                 }

  37.                 if ($file != "." && $file != ".." ) {
  38.                         $mStr .= "rename \"$file\" \"$fileTemp2\"\r\n";
  39.                 }
  40.                 // utf8 環境下無法執行以下兩行指令
  41.                 //exec("rename \"$file\" \"$fileTemp2\"");
  42.                 //rename($file, $fileTemp2);
  43.         }
  44.         $mStr = iconv('UTF-8','big5//TRANSLIT',$mStr);
  45.         $mFP = fopen("./filename.bat", "w");
  46.         fwrite($mFP, $mStr);

  47.         closedir($handle);
  48. }
  49. ?>
複製代碼

[ Last edited by Dragoon on 2004-12-14 at 16:34 ]
分享淘帖0 分享分享0 收藏收藏0 頂0 踩0
您需要登錄後才可以回帖 登錄 | 免費註冊

與站長聯繫| PALMisLIFE 掌上生活      下載:更快、更棒、更好玩

GMT+8, 2024-11-16 17:39 , Processed in 0.050296 second(s), 31 queries , Gzip On.

Powered by Discuz!

© 2001-2012 Comsenz Inc. style by eisdl

回頂部