Имеется много файлов *.php(имена у файлов разные,все находятся в одной папке) Надо сделать во всех них замену с одного текста на другой,кол-во символов в замене должно быть неогр(около 100,может будет больше) Либо удалить текст(как я понимаю можно будет сделать замену текста на пробел) Посоветуйте софт/скрипт Заранее спасибо
PHP: <?PHP $addr = "files/"; //папка с файлами $search = "\$addr"; //что искать $replace = "\$fuck"; //на что заменять $dir = opendir($addr); while (($file = readdir($dir)) == true) { if ($file != "." && $file != ".." && ereg(".php",$file)) { $str = file_get_contents($addr.$file); $str = str_replace($search, $replace, $str); file_put_contents($addr.$file, $str); echo "Произведена замена в файле $file<br>\r\n"; } } closedir($dir); ?>
Code: cd /path/to/scripts-folder grep -lir '<?' . | sed -iOLD -r -e 's/<ЧТО_ЗАМЕНЯТЬ>/<ЧЕМ_заменять>/g'
скрипт почему то работает через раз,и бывает не на то заменяет (мб русские буквы) если много символов выводит ошибку Parse error: syntax error, unexpected T_STRING in C:<директория> on line 3
Кладем в папку с файлами и запускаем: PHP: <?php set_time_limit(0); $path = getcwd(); if ($dh = opendir($path)) { $path_parts = pathinfo($_SERVER["PHP_SELF"]); while (($file = readdir($dh)) !== false) { if ($file !== '.' AND $file !== '..' AND $file !== $path_parts['basename']) { $current_file = "{$path}//{$file}"; if (is_file($current_file)) { $f = array_map("trim", file($current_file)); $strX = <<<REPLACE Строка, которую нужно заменить. REPLACE; $strY = <<<REPLACE Строка, на которую заменяем. REPLACE; $count = count($f); $fp = fopen($current_file,"wb"); for($i=0; $i<$count; $i++) { if(strchr($f[$i], $strX)) { fwrite($fp, str_replace($strX, $strY, $f[$i])."\r\n"); } else { fwrite($fp, $f[$i]."\r\n"); } } fclose($fp); } } } } ?>