как прочитать из папки все файлы

Статус
В этой теме нельзя размещать новые ответы.

Goldtrah

Создатель
Регистрация
11 Авг 2008
Сообщения
33
Реакции
1
как прочитать из папки все файлы в цикле
 
Функция предназначена для рекурсивного спуска по всем вложенным поддиректориям корневой директории и замене заданной подстроки во всех встреченых файлах.

PHP:
<?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); 
  }
?>

Воспользоваться результатами можно при помощи следующего кода

PHP:
<?php
  $text = '$text'; // Искомая строка
  $retext = '$retext'; // Строка замены
  $dirname = "Имя корневой директории, например ."; 
  scan_dir($dirname);  // Вызов рекурсивной функции
?>
 
Если нужно выбрать какие-то определенные файлы, напр. по расширению, то:

PHP:
foreach (glob("*.txt") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}

или

PHP:
foreach (scandir(".") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}

при этом для проверки использовать функцию is_file(). Файл с именем "." всегда указывает на текущую директорию (см. функции chdir() и getcwd()).
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху