如何批量替换相对地址为绝对地址(利用bat批处理实现)


Posted in PHP onMay 27, 2013

如果你的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文件,全部页面里的相对地址就会变成绝对地址了。
PHP 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 PHP
PHP里的中文变量说明
Jul 23 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
Dec 14 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
nginx下安装php7+php5
Jul 31 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 PHP
php 深入理解strtotime函数的使用详解
May 23 #PHP
如何使用PHP计算上一个月的今天
May 23 #PHP
解析php二分法查找数组是否包含某一元素
May 23 #PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 #PHP
php设计模式之观察者模式的应用详解
May 21 #PHP
php设计模式之命令模式的应用详解
May 21 #PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 #PHP
You might like
PHP实现简单实用的验证码类
2015/07/29 PHP
非常重要的php正则表达式详解
2016/01/04 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
js运动事件函数详解
2016/10/21 Javascript
javascript实现简易计算器
2017/02/01 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
python样条插值的实现代码
2018/12/17 Python
Django实现学生管理系统
2019/02/26 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
后勤工作职责
2013/12/22 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
励志演讲稿200字
2014/08/21 职场文书
2015年护士节慰问信
2015/03/23 职场文书
python - timeit 时间模块
2021/04/06 Python
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP