如何批量替换相对地址为绝对地址(利用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 相关文章推荐
WHOIS类的修改版
Oct 09 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
浅析php header 跳转
Jun 17 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
ThinkPHP模型详解
Jul 27 PHP
PHP5.3新特性小结
Feb 14 PHP
php实现图片上传、剪切功能
May 07 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
建立动态的WML站点(一)
2006/10/09 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python为tornado添加recaptcha验证码功能
2014/02/26 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
如何在Python对Excel进行读取
2020/06/04 Python
python如何保存文本文件
2020/06/07 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
我的网上商城创业计划书
2013/12/26 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
大型活动组织方案
2014/05/10 职场文书
开展创先争优活动总结
2014/08/28 职场文书
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby