如何批量替换相对地址为绝对地址(利用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应用程序来获取Web服务器的状态信息
Oct 09 PHP
php之对抗Web扫描器的脚本技巧
Oct 01 PHP
PHP学习之数组值的操作
Apr 17 PHP
php调用google接口生成二维码示例
Apr 28 PHP
Yii2主题(Theme)用法详解
Jul 23 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
如何优雅的使用 laravel 的 validator验证方法
Nov 11 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 PHP
KindEditor在php环境下上传图片功能集成的方法示例
Jul 20 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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
PHP令牌 Token改进版
2008/07/18 PHP
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
python中pass语句用法实例分析
2015/04/30 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
大学四年学习的自我评价分享
2013/12/09 职场文书
列车长先进事迹材料
2014/01/25 职场文书
工作自我评价怎么写
2014/01/29 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
个人委托书如何写
2014/09/25 职场文书
新闻稿格式范文
2015/07/18 职场文书