php 批量替换程序实例代码

作者:袖梨 2022-06-24
 代码如下 复制代码


/***************************************************************************
                             batch-replace, v1.1
 ***************************************************************************
    file:                batch-replace_utf8.php
    functionality:       本程序可以扫描指定目录的所有文件,进行内容替换。可用于被批量挂马的删除以及批量更新页面某些内容。
                         本程序适用于对UTF-8的页面进行修改。
                        
 

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU Lesser General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/
 
set_time_limit(3600);


if($_POST['Submit']=='开始执行操作'){
  $dir = $_POST['searchpath'];
  $shortname = $_POST['shortname'];
  $isall = $_POST['isall'];
  $isreg = $_POST['isreg'];
 
if (!get_magic_quotes_gpc()) {
  $sstr = $_POST['sstr'];
  $rpstr = $_POST['rpstr'];
} else {
  $sstr = stripslashes($_POST['sstr']);
  $rpstr = stripslashes($_POST['rpstr']);
}   
 

  //分析shortname
  $arrext = explode ("|",$shortname);


  if (!is_dir($dir)) return;
  if ($sstr == '') return;

  //把末尾的/去掉
  if(substr($dir,-1)=='/') $dir = substr($dir,0,strrpos($dir,"/"));

  //罗列所有目录
  if ($isall == 1){
    hx_dirtree($dir);
  }else{
    hx_dealdir($dir);

  }

exit();
}


function hx_dirtree($path="."){
  global $sstr,$rpstr,$isreg,$arrext;


  $d = dir($path);
  while(false !== ($v = $d->read())) {
    if($v == "." || $v == "..") continue;
    $file = $d->path."/".$v;
    if(is_dir($file)) {
      echo "

$v

"; hx_dirtree($file);
    }else{
        $ext=substr(strrchr($v,"."), 1);
        if( in_array($ext , $arrext) ){
          echo "
  • $file ";
              $body = file_get_contents($file);
              if($isreg == 1){
              $body2 = preg_replace($sstr, $rpstr, $body);
              }else{
              $body2 = str_replace($sstr, $rpstr, $body);
              }
              if($body != $body2 && $body2 != ''){
                tofile($file,$body2);
                echo ' OK';
              }else{
                echo ' NO';
              }
              echo '
  • ';
            }
        }
      }
      $d->close();
    }

    function hx_dealdir($dir){
      global $sstr,$rpstr,$isreg,$arrext;
        if ($dh = opendir($dir)) {
        while (false !== ($file = readdir($dh))) {
          if(filetype($dir.'/'.$file)=='file'){

            $ext=substr(strrchr($file,"."), 1);
            if( in_array($ext , $arrext) ){

              echo "

  • $file ";
              $body = file_get_contents($dir.'/'.$file);       
              if($isreg == 1){
              $body2 = preg_replace($sstr, $rpstr, $body);
              }else{
              $body2 = str_replace($sstr, $rpstr, $body);
              }
              if($body != $body2 && $body2 != ''){           
                tofile($dir.'/'.$file,$body2);
                echo ' OK';
              }else{
                echo ' NO';
              }
              echo '
  • ';
            }
          }
        }
        closedir($dh);
        }

    }
    //把生成文件的过程写出函数
    function tofile($file_name,$file_content){
     if (is_file ($file_name)){
      @unlink ($file_name);
     }
      $handle = fopen ($file_name,"w");
      if (!is_writable ($file_name)){
        return false;
      }
      if (!fwrite ($handle,$file_content)){
        return false;
      }
      fclose ($handle); //关闭指针
      return $file_name;
    }
    ?>



    批量替换程序|木马批量删除_www.itlearner.com



     


    批量替换程序(UTF-8版)


    本程序可以扫描指定目录的所有文件,进行内容替换。可用于被批量挂马的删除以及批量更新页面某些内容。

    在文件数量非常多的情况下,本操作比较占用服务器资源,请确脚本超时限制时间允许更改,否则可能无法完成操作。

     




     
       
       
     
     
       
       
     
     
       
     
     
       
     
     起始根路径:
          点表示当前目录,末尾不要加/ checkbox" name="isall" value="1" />包含此目录下所有目录
     文件扩展名:
          多个请用|隔开

         
           
         
         
           
         
         
           
           
           
           
         
       
    内容替换选项: 使用正则表达式
    替换内容类默认使用字符串替换,也可以使用正则表达式(需勾选)。"替换为"不填写的话,就表示删除"替换内容"。
     替换内容:<textarea name="sstr" id="sstr" style="width:90%;height:45px">替 换 为:

     


     
       
     

         

            <iframe name="stafrm" frameborder="0" id="stafrm" width="100%" height="100%">
         

             


    相关文章

    精彩推荐