如何批量替换相对地址为绝对地址(利用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 相关文章推荐
追求程序速度,而不是编程的速度
Apr 23 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
php将session放入memcached的设置方法
Feb 14 PHP
php多文件上传实现代码
Feb 20 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
Mar 28 PHP
php gd等比例缩放压缩图片函数
Jun 12 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
Sep 21 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
Js的MessageBox
2006/12/03 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
vuex实现简易计数器
2016/10/27 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
python 布尔操作实现代码
2013/03/23 Python
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
python音频处理的示例详解
2020/12/23 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
What is view? why do we have view?
2012/06/22 面试题
有个性的自我评价范文
2013/11/15 职场文书
七年级数学教学反思
2014/01/22 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
求职导师推荐信范文
2015/03/27 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
罗马假日观后感
2015/06/08 职场文书