Home  >  Article  >  Backend Development  >  How to batch replace relative addresses with absolute addresses_PHP Tutorial

How to batch replace relative addresses with absolute addresses_PHP Tutorial

WBOY
WBOYOriginal
2016-07-20 11:17:27791browse

If your url link is a relative path "static/mapi.css", you want to replace it in batches with an absolute path "http://dev.baidu.com/wiki/static/map/cloud/ static/mapi.css". Well, you can do this:

Write a PHP file and write the URL that needs to be replaced.
The meaning of this code is to replace #BASE_URL# with http://api.map.baidu.com/lbsapi/cloud/.
What this sentence means is to replace the content in the resource file and then put it in the cloud folder. FileUtil::copyDir("resource","cloud",true);

Copy the code The code is as follows:
//Keywords that need to be replaced
$GLOBALS["patterns"] = array(
"/#BASE_URL#/"
);
//The replaced content corresponds to the matching rules above
$GLOBALS["replacements"] = array(
"http://api.map.baidu.com/lbsapi/cloud/"
//"http://172.22.168.178/lbsapi/"
//"http://dev.baidu.com/wiki/static/map/cloud/"
);
/**
* Manipulate file class
*
* Example:
* FileUtil::copyDir('b','d/e'); Test copying the folder. Create a d/e folder and copy the contents of the b folder into it
* FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); test copying files to create a b/b folder and put it in the b/1/2 folder Copy the 3.exe file into it
* FileUtil::createDir('a/1/2/3'); Test to create a folder. Create a folder a/1/2/3
* FileUtil::unlinkFile('b/d/3.exe'); Test deletion of files Delete b/d/3.exe file
*/
class FileUtil {
/**
* Create folder
*
* @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);
}
}
}
/**
* Delete files
*
* @param string $aimUrl
* @return boolean
*/
function unlinkFile($aimUrl) {
if (file_exists($aimUrl)) {
unlink($aimUrl);
return true;
} else {
return false;
}
}
/**
* Copy folder
*
* @param string $oldDir
* @param string $aimDir
* @param boolean $overWrite This parameter controls whether to overwrite the original file
* @return boolean
*/
function copyDir($oldDir, $aimDir, $overWrite = false) {
$aimDir = str_replace('', '/', $aimDir);
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
$oldDir = str_replace('', '/', $oldDir);
$oldDir = substr($oldDir, -1) == '/' ? $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);
}
/**
* Copy file
*
* @param string $fileUrl
* @param string $aimUrl
* @param boolean $overWrite This parameter controls whether to overwrite the original file
* @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);
//Replace variable
$apiFilePointer = fopen($aimUrl, 'r');
$apiFileContent = fread($apiFilePointer, filesize($aimUrl));
//Only replace js, html, css files
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);
//Replace variable
return true;
}
}
FileUtil::copyDir("resource","cloud",true);
?>


Write another bat batch file to run this PHP.
php release.php
Now, just click on the bat file and the relative addresses in all pages will become absolute addresses.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/372040.htmlTechArticleIf your url link is the relative path static/mapi.css, you want to replace it in batches with the absolute path http ://dev.baidu.com/wiki/static/map/cloud/static/mapi.css. Well, you can do this: ...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn