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

php批量替换程序实例代码

WBOY
WBOYOriginal
2016-05-25 16:40:081572browse

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

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>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn