一个清理代码的程序
/************************************************************************
一个清理代码的程序,它可以清理一个目录下的所有的asp或者php的程序
这个程序有什么用呢?比方说当我们手上有一套asp写的系统,你们发现它
的美工作得很好,想拿来用php重写。于是,你们需要删除掉每个文件中的
asp代码部分,一行一行的查找,然后把它们删除,这样工作量是不是很大
呢?并且很容易删错删漏。于是我就做了这个程序,它可以自动地帮你完成
上述功能。这个程序是很久以前写的了,还不是很完善,以后有时间再把它
完善一下。
把它直接复制为一个php文件就行了。
************************************************************************/
<?php
class clear{
var $old_dir;//被替换文件存放路径
var $save_dir;//替换后文件保存路径
var $save_dir2;//替换后文件保存路径
var $file_name;
var $file_count=array();//纪录替换成功了多少个文件
va* $**il_count=array();//纪录替换失败了多少个文件
var $language;//设定要替换的语种
function clear($old_dir='',$save_dir='newdir',$language='asp'){
//判别文件或者目录是否存在
if(!file_exists($old_dir))die('对不起,您输入的文件或者目录不存在,请检查输入');
$save_dir=str_replace('\\','/',$save_dir);
$save_dir=str_replace('//','/',$save_dir);
if(substr($save_dir,-1,1)!='/')$save_dir.='/';
$old_dir=str_replace('\\','/',$old_dir);
$old_dir=str_replace('//','/',$old_dir);
$this->language=$language;
$this->save_dir=$save_dir;
$this->file_count=array();
//如果传入的是一个文件则:
if(preg_match('{\.(asp|php|html|htm)$}i',$old_dir)){
$this->old_dir=$old_dir;
$this->file_name=basename($this->old_dir);//获取文件名
$this->clear_do();
//如果传入的是一个文件夹则:
}elseif(!preg_match('{\..*$}i',$old_dir)){
if(substr($old_dir,-1,1)!='/')$old_dir.='/';
$this->xunhuan($old_dir,$save_dir);
}else{
echo '您的文件或者目录地址输入有误,请检查输入';
}
}
function xunhuan($old_dir,$save_dir){
@$dir=opendir($old_dir);
if(!$dir){
return;
}
while(false!==($f=readdir($dir))){
//如果当前是文件则直接替换
if(preg_match('{\.(asp|php|html|htm)$}i',$f)){
$this->old_dir=$old_dir.$f;
$this->save_dir=$save_dir;
$this->file_name=basename($this->old_dir);//获取文件名
$this->clear_do();
//如果当前是目录则继续打开
}elseif(!preg_match('{\..*$}i',$old_dir.$f)){
$this->xunhuan($old_dir.$f.'/',$save_dir.$f.'/');
}
}
}
function clear_do(){
$content=$this->read_file();//获取文件内容
$new_content=$this->tihuan($content);//实现替换
$this->put_in($new_content);//保存到新目录
}
function read_file(){
$fp=fopen($this->old_dir,'rb') or die('文件打开失败');
@$content=fread($fp,filesize($this->old_dir));
if(!$content)$this->fail_count[]=$this->old_dir;
fclose($fp);
return $content;
}
function tihuan($content){
switch($this->language){
case 'asp':$fuhao='%';break;
case 'php':$fuhao='\?';break;
case 'script':$fuhao='script';break;
default:die('你选择的程序语言不在本替换系统执行范围内');
}
return preg_replace('{<'.$fuhao.'.*'.$fuhao.'>}Us','',$content);
}
function put_in($new_content){
if(!file_exists($this->save_dir))@mkdir($this->save_dir);
if(!file_exists($this->save_dir))die('对不起,您输入的文件保存路径'.$this->save_dir.'有误,请检查输入');
$fp=fopen($this->save_dir.$this->file_name,'wb');
$finish=fwrite($fp,$new_content);
fclose($fp);
if($finish!==false){
$this->file_count[]='文件'.$this->file_name.'里的'.$this->language.'代码已经清理成功,并且已保存到<a href="'.$this->save_dir.'" target="blank">'.$this->save_dir.'</a>目录<br>';
return TRUE;
}else{return FALSE;}
}
}
$old_dir=$_POST['old_dir'];
$save_dir=$_POST['save_dir'];
$language=$_POST['language'];
if(!empty($old_dir)&&!empty($save_dir)&&!empty($language)){
$clear=new clear($old_dir,$save_dir,$language);
$ok=1;
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
.STYLE1 {font-size: 14px}
.STYLE3 {font-size: 13px}
-->
</style>
</head>
<body leftmargin="0" topmargin="0">
<script language="javascript">
function re(){
if(document.tihuan.upfile.value==''||document.tihuan.save_dir.value==''){
alert('对不起,请将数据填写完整')
return false;
}
document.tihuan.old_dir.value=document.tihuan.upfile.value
}
</script>
<br>
<table width="500" border="1" align="center" cellpadding="0" cellspacing="0">
<form name="tihuan" action="index.php" method="post" onSubmit="return re()">
<input type="hidden" name="old_dir" value="">
<tr>
<td height="40" colspan="2" align="center"><span class="STYLE1">存放目录请使用绝对路径,例如:C:/Apache2/htdocs/test/newdir/<br>
您可以选择替换单个文件,也可以选择替换整个目录<br>
如果您需要替换整个目录,只要把目录的路径完整输入就可以了<br>
为了安全起见,请不要选择存放目录为您的原始目录<br>
程序如果遇到同名的文件,会将它覆盖掉</span></td>
</tr>
<tr>
<td width="149" height="20"><span class="STYLE3">需要清理代码的页面路径</span></td>
<td width="345"><input name="upfile" type="file" size="30" /></td>
</tr>
<tr>
<td height="20"><span class="STYLE3">清理之后页面的存放路径</span></td>
<td><input name="save_dir" type="text" size="40" /></td>
</tr>
<tr>
<td height="20"><span class="STYLE3">请选择您需要替换的语言</span></td>
<td align="center"><span class="STYLE3"><input name="language" type="radio" value="asp" checked />
ASP
<input type="radio" name="language" value="php" />
PHP
<input type="radio" name="language" value="script" />
SCRIPT </span></td>
</tr>
<tr>
<td height="20" colspan="2" align="center"><input type="submit" name="Submit" value="提交" /></td>
</tr>
</form>
</table>
<?
if($ok==1){
echo '<table width="500" border="1" align="center" cellpadding="0" cellspacing="0">
<tr><td height="300" align="center" valign="top">
<p class="STYLE1">清理完成</p><span class="STYLE3">';
foreach($clear->file_count as $value)echo '<p>'.$value.'</p>';
echo '</span></td></tr>';
if(!empty($clea*->**il_count)){
echo '<tr><td valign="top" align="center"><p class="STYLE1">清理失败</p><span class="STYLE3">';
foreach($clea*->**il_count as $value2)echo $value2.'<br></span></td></tr>';
}
echo '</table>';
}
?>
</body>
</html>
版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2008-01/i476.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论