-4

プロジェクト フォルダーとサブ フォルダー ファイル内のすべての php およびその他のファイルで、一部のコードを空白に置き換えてコードを変更したいと考えています。次のコードがあります。

if ($handle = @ opendir("for testing")) { 
    while (($entry = readdir($handle)) ) { 
        if ($entry != "." && $entry != "..") { 
            $linecop = '/*god_mode_on*eval(test("ZXkViKSk7IA=="));*god_mode_off*/';   
            $homepage = file_get_contents($entry); 
            $string3=str_replace($linecop,'',$homepage); 
            $file = fopen($entry, "w") or exit("Unable to open file!"); 
            fwrite($file, $string3); 
            fclose($file); // 
        } 
    } 
    closedir($handle); 
}

ただし、このコードは 1 つのファイルに対してのみ機能します。すべてのファイルを変更するにはどうすればよいですか?

4

1 に答える 1

0
function recursive_replace( $directory, $search, $replace ) {
  if ( ! is_dir( $directory ) ) return;
  foreach ( glob( $directory . '/*' ) as $file ) {
    if ( $file === '.' || $file === '..' ) continue;
    if ( is_dir( $file ) ) recursive_replace( $file, $search, $replace );
    $content = file_get_contents( $file );
    $content = str_replace( $search, $replace, $content );
    file_put_contents( $file, $content );
  }
}

recursive_replace('/your/file/path', '/*god_mode_on*eval(test("ZXkViKSk7IA=="));*god_mode_off*/', '');

再帰的に検索して置換したい場合は、再帰関数を考える必要があります:) また、 glob()/file_X_contents() は、ファイルとディレクトリのニーズに使用するのにはるかに優れた関数です。コードはテストされていませんが、いずれにせよ探しているものに非常に近いです。

于 2012-04-04T08:31:56.087 に答える