如何批量替换相对地址为绝对地址(利用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开发大型项目的一点经验
Oct 09 PHP
PHP数据缓存技术
Feb 14 PHP
五个PHP程序员工具
May 26 PHP
小文件php+SQLite存储方案
Sep 04 PHP
PHP正则表达式之定界符和原子介绍
Oct 05 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 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
javaScript对象和属性的创建方法
2007/01/15 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
python实现上传下载文件功能
2020/11/19 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
如何开启linux的ssh服务
2013/06/03 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
推普周活动总结
2014/08/28 职场文书
2014年学习部工作总结
2014/11/12 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
八月一日观后感
2015/06/10 职场文书
赢在执行观后感
2015/06/16 职场文书
毕业感言怎么写
2015/07/31 职场文书
小学运动会入场口号
2015/12/24 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL