>php教程 >php手册 >php批量替换程序实例代码

php批量替换程序实例代码

WBOY
WBOY원래의
2016-05-25 16:40:081571검색

本程序可以实现批量替换目录中所有文件中的内容或用于打量给挂了木马文件批量替换与更新了,希望文章对各位同学有所帮助.

php 批量替换程序实例代码如下:

<?php
/***************************************************************************
                             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[&#39;Submit&#39;] == &#39;开始执行操作&#39;) {
    $dir = $_POST[&#39;searchpath&#39;];
    $shortname = $_POST[&#39;shortname&#39;];
    $isall = $_POST[&#39;isall&#39;];
    $isreg = $_POST[&#39;isreg&#39;];
    if (!get_magic_quotes_gpc()) {
        $sstr = $_POST[&#39;sstr&#39;];
        $rpstr = $_POST[&#39;rpstr&#39;];
    } else {
        $sstr = stripslashes($_POST[&#39;sstr&#39;]);
        $rpstr = stripslashes($_POST[&#39;rpstr&#39;]);
    }
    //分析shortname
    $arrext = explode("|", $shortname);
    if (!is_dir($dir)) return;
    if ($sstr == &#39;&#39;) return;
    //把末尾的/去掉
    if (substr($dir, -1) == &#39;/&#39;) $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 "<p>$v</p>";
            hx_dirtree($file);
        } else {
            $ext = substr(strrchr($v, ".") , 1);
            if (in_array($ext, $arrext)) {
                echo "<li>$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 != &#39;&#39;) {
                    tofile($file, $body2);
                    echo &#39; OK&#39;;
                } else {
                    echo &#39; NO&#39;;
                }
                echo &#39;</li>&#39;;
            }
        }
    }
    $d->close();
}
function hx_dealdir($dir) {
    global $sstr, $rpstr, $isreg, $arrext;
    if ($dh = opendir($dir)) {
        while (false !== ($file = readdir($dh))) {
            if (filetype($dir . &#39;/&#39; . $file) == &#39;file&#39;) {
                $ext = substr(strrchr($file, ".") , 1);
                if (in_array($ext, $arrext)) {
                    echo "<li>$file ";
                    $body = file_get_contents($dir . &#39;/&#39; . $file);
                    if ($isreg == 1) {
                        $body2 = preg_replace($sstr, $rpstr, $body);
                    } else {
                        $body2 = str_replace($sstr, $rpstr, $body);
                    }
                    if ($body != $body2 && $body2 != &#39;&#39;) {
                        tofile($dir . &#39;/&#39; . $file, $body2);
                        echo &#39; OK&#39;;
                    } else {
                        echo &#39; NO&#39;;
                    }
                    echo &#39;</li>&#39;;
                }
            }
        }
        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;
}
?>
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>批量替换程序|木马批量删除_www.itlearner.com</title> 
<style type="text/css"> 
body{background:#FFFFFF;color:#000;font-size:12px;} 
#top{text-align:center;} 
h1,p,form{margin:0;padding:0;} 
h1{font-size;14px;} 
</style> 
</head> 
<body> 
  <div id="top"> 
<h1>批量替换程序(UTF-8版)</h1> 
<div>本程序可以扫描指定目录的所有文件,进行<strong>内容替换</strong>。可用于被批量挂马的删除以及批量更新页面某些内容。<br/> 
在文件数量非常多的情况下,本操作比较占用服务器资源,请确脚本超时限制时间允许更改,否则可能无法完成操作。</div> 
</div> 
<form action="<?=$_SERVER[&#39;SCRIPT_NAME&#39;]" name="form1" target="stafrm" method="post"> 
<table width="95%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#666666"> 
  <tr> 
    <td width="10%" bgcolor="#FFFFFF"><strong> 起始根路径:</strong></td> 
    <td width="90%" bgcolor="#FFFFFF"><input name="searchpath" type="text" id="searchpath" value="./test" size="20" /> 
      点表示当前目录,末尾不要加/ <input type="checkbox" name="isall" value="1" />包含此目录下所有目录</td> 
  </tr> 
  <tr> 
    <td bgcolor="#FFFFFF"><strong> 文件扩展名:</strong></td> 
    <td bgcolor="#FFFFFF"><input name="shortname" type="text" id="shortname" size="20" value="php|htm" /> 
      多个请用|隔开</td> 
  </tr> 
  <tr id="rpct"> 
    <td height="64" colspan="2" bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="1" cellpadding="1"> 
      <tr bgcolor="#EDFCE2"> 
        <td colspan="4"><strong>内容替换选项:</strong> <input type="checkbox" name="isreg" value="1" />使用正则表达式</td> 
      </tr> 
      <tr> 
        <td colspan="4">替换内容类默认使用字符串替换,也可以使用正则表达式(需勾选)。"替换为"不填写的话,就表示删除"替换内容"。</td> 
      </tr> 
      <tr> 
        <td width="10%"> 替换内容:</td> 
        <td width="36%"><textarea name="sstr" id="sstr" style="width:90%;height:45px"></textarea></td> 
        <td width="10%">替 换 为:</td> 
        <td><textarea name="rpstr" id="rpstr" style="width:90%;height:45px"></textarea></td> 
      </tr> 
    </table></td> 
  </tr> 
  <tr> 
    <td colspan="2" height="20" align="center" bgcolor="#E2F5BC"><input type="submit" name="Submit" value="开始执行操作" class="inputbut" /></td>//开源代码phprm.com 
  </tr> 
</table> 
  </form> 
<table width="95%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#666666"> 
  <tr bgcolor="#FFFFFF"> 
    <td id="mtd"> 
     <div id=&#39;mdv&#39; style=&#39;width:100%;height:100;&#39;> 
        <iframe name="stafrm" frameborder="0" id="stafrm" width="100%" height="100%"></iframe> 
      </div> 
      <script type="text/javascript"> 
     document.all.mdv.style.pixelHeight = screen.height - 450; 
     </script>    </td> 
  </tr> 
</table> 
</body> 
</html>


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.