熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

如何批量替換相對地址為絕對地址

2013-11-15 12:24:29  來源: PHP編程 

  如果你的url鏈接是相對路徑“static/mapicss”你想把他批量替換成絕對路徑“那麼你可以這樣做

寫一個PHP文件把需要替換的網址寫進去
這個代碼的意思就是把#BASE_URL#替換成
這句話的意思是把resource文件裡的內容替換一遍然後放到cloud文件夾裡FileUtil::copyDir("resource""cloud"true);

復制代碼 代碼如下:
<?php
//需要替換的關鍵字
$GLOBALS["patterns"] = array(
"/#BASE_URL#/"
);
//替換後的內容和上面的匹配規則一一對應
$GLOBALS["replacements"] = array(
"
//"
//"
);
/**
* 操縱文件類
*
* 例子
* FileUtil::copyDir(bd/e); 測試復制文件夾 建立一個d/e文件夾把b文件夾下的內容復制進去
* FileUtil::copyFile(b///exeb/b/exe); 測試復制文件 建立一個b/b文件夾並把b//文件夾中的exe文件復制進去
* FileUtil::createDir(a///); 測試建立文件夾 建一個a///文件夾
* FileUtil::unlinkFile(b/d/exe); 測試刪除文件 刪除b/d/exe文件
*/
class FileUtil {
/**
* 建立文件夾
*
* @param string $aimUrl
* @return viod
*/
function createDir($aimUrl) {
$aimUrl = str_replace( / $aimUrl);
$aimDir = ;
$arr = explode(/ $aimUrl);
foreach ($arr as $str) {
$aimDir = $str /;
if (!file_exists($aimDir)) {
mkdir($aimDir);
}
}
}
/**
* 刪除文件
*
* @param string $aimUrl
* @return boolean
*/
function unlinkFile($aimUrl) {
if (file_exists($aimUrl)) {
unlink($aimUrl);
return true;
} else {
return false;
}
}
/**
* 復制文件夾
*
* @param string $oldDir
* @param string $aimDir
* @param boolean $overWrite 該參數控制是否覆蓋原文件
* @return boolean
*/
function copyDir($oldDir $aimDir $overWrite = false) {
$aimDir = str_replace( / $aimDir);
$aimDir = substr($aimDir ) == / ? $aimDir : $aimDir/;
$oldDir = str_replace( / $oldDir);
$oldDir = substr($oldDir ) == / ? $oldDir : $oldDir/;
if (!is_dir($oldDir)) {
return false;
}
if (!file_exists($aimDir)) {
FileUtil::createDir($aimDir);
}
$dirHandle = opendir($oldDir);
while(false !== ($file = readdir($dirHandle))) {
if ($file == || $file == ) {
continue;
}
if (!is_dir($oldDir $file)) {
FileUtil::copyFile($oldDir $file $aimDir $file $overWrite);
} else {
FileUtil::copyDir($oldDir $file $aimDir $file $overWrite);
}
}
return closedir($dirHandle);
}
/**
* 復制文件
*
* @param string $fileUrl
* @param string $aimUrl
* @param boolean $overWrite 該參數控制是否覆蓋原文件
* @return boolean
*/
function copyFile($fileUrl $aimUrl $overWrite = false) {
if (!file_exists($fileUrl)) {
return false;
}
if (file_exists($aimUrl) && $overWrite == false) {
return false;
} elseif (file_exists($aimUrl) && $overWrite == true) {
FileUtil::unlinkFile($aimUrl);
}
$aimDir = dirname($aimUrl);
FileUtil::createDir($aimDir);
copy($fileUrl $aimUrl);
//替換變量
$apiFilePointer = fopen($aimUrl r);
$apiFileContent = fread($apiFilePointer filesize($aimUrl));
//只在jshtmlcss文件進行替換
if (preg_match(/(js|html|css|htm)$/ $aimUrl)) {
$apiFileContent = preg_replace($GLOBALS["patterns"] $GLOBALS["replacements"] $apiFileContent);
}
fclose($apiFilePointer);
echo $aimUrl"rn";
$apiFilePointer = fopen($aimUrl w+);
fwrite($apiFilePointer $apiFileContent);
fclose($apiFilePointer);
//替換變量
return true;
}
}
FileUtil::copyDir("resource""cloud"true);
?>

  
再寫一個bat批處理文件來運行這個PHP
php releasephp
現在只需點擊bat文件全部頁面裡的相對地址就會變成絕對地址了 


From:http://tw.wingwit.com/Article/program/PHP/201311/20891.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.