程序员人生 网站导航

PHP 批量替换相对地址为绝对地址实现代码

栏目:php教程时间:2014-01-30 20:49:39
  1. <?php 
  2.  
  3. //需要替换的关键字 
  4. $GLOBALS["patterns"] = array
  5.     "/#BASE_URL#/" 
  6. ); 
  7. //替换后的内容,和上面的匹配规则一一对应 
  8. $GLOBALS["replacements"] = array
  9.    "http://api.map.baidu.com/lbsapi/cloud/" 
  10.     //"http://172.22.168.178/lbsapi/" 
  11.     //"http://dev.baidu.com/wiki/static/map/cloud/" 
  12. ); 
  13. /** 
  14.  * 操纵文件类 
  15.  *  
  16.  * 例子: 
  17.  * FileUtil::copyDir('b','d/e');                    测试复制文件夹 建立一个d/e文件夹,把b文件夹下的内容复制进去 
  18.  * FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件        建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去 
  19.  * FileUtil::createDir('a/1/2/3');                    测试建立文件夹 建一个a/1/2/3文件夹 
  20.  * FileUtil::unlinkFile('b/d/3.exe');             测试删除文件        删除b/d/3.exe文件 
  21.  */ 
  22. class FileUtil { 
  23.     /** 
  24.      * 建立文件夹 
  25.      * 
  26.      * @param string $aimUrl 
  27.      * @return viod 
  28.      */ 
  29.     function createDir($aimUrl) { 
  30.         $aimUrl = str_replace('''/'$aimUrl); 
  31.         $aimDir = ''
  32.         $arr = explode('/'$aimUrl); 
  33.         foreach ($arr as $str) { 
  34.             $aimDir .= $str . '/'
  35.             if (!file_exists($aimDir)) { 
  36.                 mkdir($aimDir); 
  37.             } 
  38.         } 
  39.     } 
  40.     /** 
  41.      * 删除文件 
  42.      * 
  43.      * @param string $aimUrl 
  44.      * @return boolean 
  45.      */ 
  46.     function unlinkFile($aimUrl) { 
  47.         if (file_exists($aimUrl)) { 
  48.             unlink($aimUrl); 
  49.             return true; 
  50.         } else { 
  51.             return false; 
  52.         } 
  53.     } 
  54.      
  55.     /** 
  56.      * 复制文件夹 
  57.      * 
  58.      * @param string $oldDir 
  59.      * @param string $aimDir 
  60.      * @param boolean $overWrite 该参数控制是否覆盖原文件 
  61.      * @return boolean 
  62.      */ 
  63.     function copyDir($oldDir$aimDir$overWrite = false) { 
  64.         $aimDir = str_replace('''/'$aimDir); 
  65.         $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/'
  66.         $oldDir = str_replace('''/'$oldDir); 
  67.         $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir.'/'
  68.         if (!is_dir($oldDir)) { 
  69.             return false; 
  70.         } 
  71.         if (!file_exists($aimDir)) { 
  72.             FileUtil::createDir($aimDir); 
  73.         } 
  74.         $dirHandle = opendir($oldDir); 
  75.         while(false !== ($file = readdir($dirHandle))) { 
  76.             if ($file == '.' || $file == '..') { 
  77.                 continue
  78.             } 
  79.             if (!is_dir($oldDir . $file)) { 
  80.                 FileUtil::copyFile($oldDir . $file$aimDir . $file$overWrite); 
  81.             } else { 
  82.                 FileUtil::copyDir($oldDir . $file$aimDir . $file$overWrite); 
  83.             } 
  84.         } 
  85.         return closedir($dirHandle); 
  86.     } 
  87.     /** 
  88.      * 复制文件 
  89.      * 
  90.      * @param string $fileUrl 
  91.      * @param string $aimUrl 
  92.      * @param boolean $overWrite 该参数控制是否覆盖原文件 
  93.      * @return boolean 
  94.      */ 
  95.     function copyFile($fileUrl$aimUrl$overWrite = false) { 
  96.         if (!file_exists($fileUrl)) { 
  97.             return false; 
  98.         } 
  99.         if (file_exists($aimUrl) && $overWrite == false) { 
  100.             return false; 
  101.         } elseif (file_exists($aimUrl) && $overWrite == true) { 
  102.             FileUtil::unlinkFile($aimUrl); 
  103.         } 
  104.         $aimDir = dirname($aimUrl); 
  105.         FileUtil::createDir($aimDir); 
  106.         copy($fileUrl$aimUrl); 
  107.         //替换变量 
  108.         $apiFilePointer = fopen($aimUrl'r'); 
  109.         $apiFileContent = fread($apiFilePointerfilesize($aimUrl)); 
  110.         //只在js、html、css文件进行替换 
  111.         if (preg_match('/(.js|.html|.css|.htm)$/'$aimUrl)) { 
  112.             $apiFileContent = preg_replace($GLOBALS["patterns"], $GLOBALS["replacements"], $apiFileContent); 
  113.         } 
  114.         fclose($apiFilePointer); 
  115.         echo $aimUrl."rn"
  116.         $apiFilePointer = fopen($aimUrl'w+'); 
  117.         fwrite($apiFilePointer$apiFileContent); 
  118.         fclose($apiFilePointer); 
  119.         //替换变量 
  120.         return true; 
  121.     } 
  122. FileUtil::copyDir("resource","cloud",true); 
  123. ?> 
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐