Home > Backend Development > PHP Tutorial > Specific implementation code of php batch replacement program_PHP tutorial

Specific implementation code of php batch replacement program_PHP tutorial

WBOY
Release: 2016-07-21 16:13:15
Original
917 people have browsed it

The code is as follows:

Copy the code The code is as follows:

/***************************************************************************
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版)


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

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













    Starting root path:
    dot indicates the current directory, do not add / at the end Includes all directories in this directory
    File extension:
    Please use | to separate multiples











    Content replacement options: Use regular expressions
    The replacement content class uses string replacement by default, and regular expressions can also be used (checked). If "replace with" is not filled in, it means deleting the "replacement content".
    Replacement content: Replace with: