zoukankan      html  css  js  c++  java
  • 如何批量替换相对地址为绝对地址?PHP

    如果你的url链接是相对路径“static/mapi.css”,你想把他批量替换成绝对路径“http://dev.baidu.com/wiki/static/map/cloud/static/mapi.css”。那么,你可以这样做:

    写一个PHP文件,把需要替换的网址写进去。

    这个代码的意思就是,把#BASE_URL#替换成 http://api.map.baidu.com/lbsapi/cloud/ 。

    这句话的意思是,把resource文件里的内容替换一遍,然后放到cloud文件夹里。FileUtil::copyDir("resource","cloud",true);

    <?php
    //需要替换的关键字
    $GLOBALS["patterns"] = array(
        "/#BASE_URL#/"
    );
    
    //替换后的内容,和上面的匹配规则一一对应
    $GLOBALS["replacements"] = array(
       "http://api.map.baidu.com/lbsapi/cloud/"
        //"http://172.22.168.178/lbsapi/"
        //"http://dev.baidu.com/wiki/static/map/cloud/"
    );
    
    /**
     * 操纵文件类
     * 
     * 例子:
     * FileUtil::copyDir('b','d/e');                    测试复制文件夹 建立一个d/e文件夹,把b文件夹下的内容复制进去
     * FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件        建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去
     * FileUtil::createDir('a/1/2/3');                    测试建立文件夹 建一个a/1/2/3文件夹
     * FileUtil::unlinkFile('b/d/3.exe');             测试删除文件        删除b/d/3.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, -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);
        }
        /**
         * 复制文件
         *
         * @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));
            //只在js、html、css文件进行替换
            if (preg_match('/(\.js|\.html|\.css|\.htm)$/', $aimUrl)) {
                $apiFileContent = preg_replace($GLOBALS["patterns"], $GLOBALS["replacements"], $apiFileContent);
            }
            fclose($apiFilePointer);
            echo $aimUrl."\r\n";
            $apiFilePointer = fopen($aimUrl, 'w+');
            fwrite($apiFilePointer, $apiFileContent);
            fclose($apiFilePointer);
            //替换变量
            return true;
        }
    }
    
    FileUtil::copyDir("resource","cloud",true);
    
    ?>

    再写一个bat批处理文件,来运行这个PHP。

    php release.php

    现在,只需点击bat文件,全部页面里的相对地址就会变成绝对地址了。

  • 相关阅读:
    react Table key值使用方式
    C# EF查询不同分组的第一条数据
    C# MVC PDFJS URL传参方式+文件流方式在线展示文档
    docker nginx配置写错,启动不了容器的解决方案
    网络编程之BIO和NIO
    网络编程之BIO和NIO
    IT职场心得感想
    我们希望能与各位快乐拼博的站长们一路前行
    UART, SPI详解
    创业精神
  • 原文地址:https://www.cnblogs.com/milkmap/p/2665641.html
Copyright © 2011-2022 走看看