Функция предназначена для рекурсивного спуска по всем вложенным поддиректориям корневой директории и замене заданной подстроки во всех встреченых файлах.
Код рекурсивной фукнции scan_dir(), которая обходит директории
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php ////////////////////////////////////////////////////////// // Рекурсивная функция - спускаемся вниз по каталогу ////////////////////////////////////////////////////////// function scan_dir($dirname) { // Объявляем переменные замены глобальными GLOBAL $text, $retext; // Открываем текущую директорию $dir = opendir($dirname); // Читаем в цикле директорию while (($file = readdir($dir)) !== false) { // Если файл обрабатываем его содержимое if($file != "." && $file != "..") { // Если имеем дело с файлом - производим в нём замену if(is_file($dirname."/".$file)) { // Читаем содержимое файла $content = file_get_contents($dirname."/".$file); // Осуществляем замену $content = str_replace($text, $retext, $content); // Перезаписываем файл file_put_contents($dirname."/".$file,$content); } // Если перед нами директория, вызываем рекурсивно // функцию scan_dir if(is_dir($dirname."/".$file)) { echo $dirname."/".$file."<br>"; scan_dir($dirname."/".$file); } } } // Закрываем директорию closedir($dir); } ?> |
Воспользоваться результатами можно при помощи следующего кода
Код вызова функции scan_dir()
1 2 3 4 5 6 |
<?php $text = '$text'; // Искомая строка $retext = '$retext'; // Строка замены $dirname = "Имя корневой директории, например ."; scan_dir($dirname); // Вызов рекурсивной функции ?> |