你的位置: Kiyo'Space首页 Php 阅读文章 欢迎留下您的足迹

一个清理代码的程序

[ Php ] 分享

/************************************************************************

    一个清理代码的程序,它可以清理一个目录下的所有的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>


欢迎在此留下您的脚步






评论内容 (*必填):
(Ctrl + Enter 快速提交)