Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как можно исключить определенную группу файлов


Автор: Alek74 15.4.2006, 10:12
Как можно исключить определенную группу файлов? К примеру *.txt при подсчете файлов.

Автор: krulik 15.4.2006, 10:38
Глупо но можно так.
Например через glob() считать все файлы из директории.
Ну а потом подсчитать сколько там файлов определенного расширения. Искать нужные файлы через регулярные выражения.

Вот реализация того что я сказал выше:
Код

<?php
$i=0;
$filesList=glob('D:\Личные\krulik\www\*.*'); //считываем все полный путь каждого файла из указанной дериктории
    foreach ($filesList as $filePath)
    {
        preg_match('/(\w+)\.(\w+)/',$filePath,$fileName); //регуляркой режим а куски имя файла
        {
            if ($fileName[2]!='php') $i++; // если расширение не равно РНР приращиваем счетчик        
        }    
    }
    print $i;
?>    

Автор: Alek74 15.4.2006, 11:55
Вот нашел на форуме функцию.
Код

<?php
function dirsize( $d )
{
  $dh = opendir( $d );
  while( ( $f = readdir( $dh ) ) !== false )
   {
    if ( $f != "." && $f != ".." )
     {
      $path = $d . "/" . $f;
      if( is_dir( $path ) )
       {  $count += dirsize( $path , $count );  }
      elseif( is_file( $path ) )
       {  $count++;  }
     }
   }
  closedir($dh);
  return $count;
}
$count = 0;
print dirsize("./" , 0);
?>



Разрезать до расширения можно так
Код

if ( substr($file,-3,3) != 'htm'){....


А вот как поставить это дополнительное условие?

Автор: krulik 15.4.2006, 12:04
Alek74 ты мой код пробовал? Там все работает. Не нравится способ определения типа файла? Используй другую (это уже твое решение. Тем более я просто взял код из своей гоствевухи и только тело цикла переделал под твой вопрос.). Я просто привел возможный алгоритм

Цитата

А вот как поставить это дополнительное условие?

Как ни крути все равно прийдется сравнивать каждый файл. И к томуже в куске кода который ты привел я не вижу ничего похожего на решение твоего вопроса.

ЗЫ: может из-за отсутствия большого опыта в программированиии на РНР, но другого алгоритма кроме предложеного мною ранее я не вижу!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)