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

Тема в разделе "PHP", создана пользователем Goldtrah, 23 сен 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Goldtrah

    Goldtrah Создатель

    Регистр.:
    11 авг 2008
    Сообщения:
    33
    Симпатии:
    1
    как прочитать из папки все файлы в цикле
     
  2. x@nder

    x@nder Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    128
    Симпатии:
    5
    Функция предназначена для рекурсивного спуска по всем вложенным поддиректориям корневой директории и замене заданной подстроки во всех встреченых файлах.

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

    drkwv Создатель

    Регистр.:
    2 окт 2007
    Сообщения:
    10
    Симпатии:
    1
    Если нужно выбрать какие-то определенные файлы, напр. по расширению, то:

    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()).
     
Статус темы:
Закрыта.