如何批量替换相对地址为绝对地址(利用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 8小时时间差的解决方法小结
Dec 22 PHP
php引用传值实例详解学习
Nov 06 PHP
php获取汉字首字母的函数
Nov 07 PHP
PHP临时文件的安全性分析
Jul 04 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
php画图实例
Nov 05 PHP
php自动获取关键字的方法
Jan 06 PHP
PHP简单日历实现方法
Jul 20 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 04 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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
Terran魔法科技
2020/03/14 星际争霸
PHP无限分类(树形类)
2013/09/28 PHP
thinkphp配置文件路径的实现方法
2016/08/30 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
解析jquery获取父窗口的元素
2013/06/26 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
谈谈JavaScript中的函数
2020/09/08 Javascript
Python中splitlines()方法的使用简介
2015/05/20 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
Python-opencv 双线性插值实例
2020/01/17 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
顶岗实习接收函
2014/01/09 职场文书
施工安全标语
2014/06/07 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
绿里奇迹观后感
2015/06/15 职场文书
2016新年感言
2015/08/03 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书