如何批量替换相对地址为绝对地址(利用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的正则处理函数总结分析
Jun 20 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
新浪SAE搭建PHP项目教程
Jan 28 PHP
PHP正则验证Email的方法
Jun 15 PHP
php动态绑定变量的用法
Jun 16 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
功能强大的php文件上传类
Aug 29 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
Yii框架常见缓存应用实例小结
Sep 09 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
PHP4之COOKIE支持详解
2006/10/09 PHP
php mysql数据库操作分页类
2008/06/04 PHP
php 错误处理经验分享
2011/10/11 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python web框架中实现原生分页
2019/09/08 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
数控专业应届生求职信
2013/11/27 职场文书
公司业务主管岗位职责
2013/12/07 职场文书
中学生运动会入场词
2014/02/12 职场文书
党支部换届选举方案
2014/05/08 职场文书
经销商年会策划方案
2014/05/29 职场文书
团队精神口号
2014/06/06 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
校本课程教学计划
2015/01/19 职场文书
乔迁新居祝福语
2019/11/04 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js