如何批量替换相对地址为绝对地址(利用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 相关文章推荐
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
PHP中的use关键字概述
Jul 23 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
php json相关函数用法示例
Mar 28 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 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的简单采集数据入库程序【续篇】
2014/07/30 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
JavaScript 常用函数
2009/12/30 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
理解JS绑定事件
2016/01/19 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
优秀民警事迹材料
2014/01/29 职场文书
论文答辩开场白大全
2015/05/27 职场文书
喋血孤城观后感
2015/06/08 职场文书
高质量“欢迎词”
2019/04/03 职场文书
vue+element ui实现锚点定位
2021/06/29 Vue.js
Python必备技巧之字符数据操作详解
2022/03/23 Python