如何批量替换相对地址为绝对地址(利用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 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
php的大小写敏感问题整理
Dec 29 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
php目录操作实例代码
Feb 21 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
PHP合并静态文件详解
Nov 14 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 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
PHP修改session_id示例代码
2014/01/08 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
js玩一玩WSH吧
2007/02/23 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
Python实现Kmeans聚类算法
2020/06/10 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
详解【python】str与json类型转换
2019/04/29 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
python logging模块的使用详解
2020/10/23 Python
房地产销售计划书
2014/01/10 职场文书
《王二小》教学反思
2014/02/27 职场文书
入党综合考察材料
2014/06/02 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
清明节扫墓活动总结
2015/02/09 职场文书