Замена строки во всех файлах директории с неограниченным числом поддиректорий
Функция предназначена для рекурсивного спуска по всем вложенным поддиректориям корневой директории и замене заданной подстроки во всех встреченых файлах.
Код рекурсивной фукнции scan_dir(), которая обходит директории
<?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()
<?php
$text = '$text'; // Искомая строка
$retext = '$retext'; // Строка замены
$dirname = "Имя корневой директории, например .";
scan_dir($dirname); // Вызов рекурсивной функции
?>