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

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

 

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

?>




Рекомендуем почитать

 

Добавить комментарий


Ваше имя:


Комментарий:


Введите: Картинка