Home  >  Article  >  Backend Development  >  PHP batch replacement of relative addresses to absolute addresses implementation code_PHP tutorial

PHP batch replacement of relative addresses to absolute addresses implementation code_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 16:56:28836browse

PHP batch replaces relative addresses with absolute addresses to implement the code. Friends in need can refer to it.

The code is as follows Copy code

//Keywords that need to be replaced
$GLOBALS["patterns"] = array(
"/#BASE_URL#/"
);

//The 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 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 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 creating a folder Create a folder a/1/2/3
* FileUtil::unlinkFile('b/d/3.exe'); Test deletion of files Deletion of 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);
        //替换变量
        $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);

?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631603.htmlTechArticlePHP Replace relative addresses in batches with absolute addresses. Friends who need the code can refer to it. The code is as follows Copy code ?php //Keywords that need to be replaced $GLOBALS[patterns] = array( /#...
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