Home  >  Article  >  Backend Development  >  How to replace relative addresses with absolute addresses in batches (implemented using bat batch processing)_PHP tutorial

How to replace relative addresses with absolute addresses in batches (implemented using bat batch processing)_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:10:31943browse

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" . Then, 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 code The code is as follows:

< ?php
//Keywords that need to be replaced
$GLOBALS["patterns"] = array(
"/#BASE_URL#/"
);
//Replaced content, Corresponds one-to-one with the above matching rules
$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 classes
*
* Example:
* FileUtil::copyDir('b','d/e'); Test copying the folder to create a d/e folder, and put 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 copy the 3.exe file in the b/1/2 folder
* FileUtil::createDir('a/1/2/3'); Test to create a folder and create a/1/2/ 3 Folder
* FileUtil::unlinkFile('b/d/3.exe'); Test deletion of file 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 file
*
* @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);
//Replacement variables
$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);
//Replacement 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/327111.htmlTechArticleIf your url link is a relative path "static/mapi.css", you want to replace it in batches with absolute Path "http://dev.baidu.com/wiki/static/map/cloud/static/mapi.css". Well, you can...
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