Все ленты — последние статьи

Замена строки во всех файлах директории с неограниченным числом вложенных поддиректорий

Автор: IT-студия SoftTime (softtime.ru)

Функция предназначена для рекурсивного спуска по всем вложенным поддиректориям корневой директории и замене заданной подстроки во всех встреченых файлах.

Код рекурсивной фукнции 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(file_put_contents,$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); // Вызов рекурсивной функции

?>