我想通过在项目文件夹和子文件夹文件中的所有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);
}
但此代码仅适用于一个文件。如何更改所有文件?
答案 0 :(得分: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()是用于文件和目录需求的更好的函数。代码没有经过测试,但在任何情况下都非常接近你正在寻找的东西。