Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод только определенных файлов
 
 автор: helovek   (17.06.2008 в 16:31)   письмо автору
 
 

Есть функция вывода файлов директории
<?php 
 
print("<ul>\n");
$myDirectory=opendir(".");

while(
FALSE !==($entryName readdir($myDirectory)))
{
   print(
"<li>$entryName</li>\n");
    
   }
   
closedir($myDirectory);
   print(
"</ul>\n");

?> 

Как чтобы выводился список только текстовых файлов директории?

   
 
 автор: BinLaden   (17.06.2008 в 16:39)   письмо автору
 
   для: helovek   (17.06.2008 в 16:31)
 

Если возможно заранее определить какой файл - текстовый или бинарный, то лучше позаботиться об этом раньше: распихивать файлы по разным директориям, делать метку в базе или в имени файла и т.п.

Иначе возможно только предположить какой перед нами файл - текстовый или бинарный, путём поиска следующих байтов (любой из них): 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0B, 0x0C, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F.

Но при этом стоить понимать, что файлы в таких кодировках, как UCS, например, будут считаться бинарными. И если файл подпорчен и содержит один из вышеперечисленных байтов, то будет тоже самое.

   
 
 автор: mihdan   (18.06.2008 в 12:19)   письмо автору
 
   для: BinLaden   (17.06.2008 в 16:39)
 

BinLaden, человеку просто нужно вывести файлы с расширением txt(doc, htm).

[поправлено модератором]

   
 
 автор: BinLaden   (18.06.2008 в 13:50)   письмо автору
 
   для: mihdan   (18.06.2008 в 12:19)
 

> BinLaden, человеку просто нужно вывести файлы с расширением txt(doc, htm)

Он этого не уточнял, почему Вы так уверены? Тогда почему Вы glob() не захотели новичку показать? Вы же профессионал и должны новичкам советовать более разумные решения. Новичёк, наверное, про эту функцию и не знает.

   
 
 автор: Zend72   (17.06.2008 в 18:07)   письмо автору
 
   для: helovek   (17.06.2008 в 16:31)
 

Если под текстовыми файлами понимаются только те у которых расширение .txt тогда
по расширению определить... Есть функция scandir() она вернет массив с именами файлов потом обойти этот массив с помощью foreach те что с расширением .txt вывести....
Вот здесь не то, но похоже напписано:
Ссылка

   
 
 автор: mihdan   (17.06.2008 в 23:46)   письмо автору
 
   для: helovek   (17.06.2008 в 16:31)
 

<?php 
 
print("<ul>\n");
$myDirectory=opendir(".");

while(
FALSE !==($entryName readdir($myDirectory))) {
   if (
preg_match('|\.txt$|'$entryName)) {
      print(
"<li>$entryName</li>\n");
   }    
}
closedir($myDirectory);
print(
"</ul>\n");

?> 

   
 
 автор: BinLaden   (18.06.2008 в 01:20)   письмо автору
 
   для: mihdan   (17.06.2008 в 23:46)
 

[поправлено модератором]

   
 
 автор: vitali   (18.06.2008 в 11:11)   письмо автору
 
   для: BinLaden   (18.06.2008 в 01:20)
 

Тип файла можно определить несколькими способами:
1) самый порочный (на мой взгляд) - это по суфиксу (по расширению), т.к. пользователь может "влепить" любое расширение;
2) по mime-типу:
- mime_content_type("имя_файла") - PHP функция, но отрабатывает не очень корректно все файлы (mime-типы обобщает);
- `file -i -b 'имя_файла'` - Unix команда, но тоже не все файлы отределяет точно, т.к. обобщает mimе-типы (в частности для mp3, xls, ppt, pps,vsd,zip, rar - уточнял по суфиксу), но для текстовых файлов указывает и тип кодировки, что удобно);
3) что предложил BinLaden.

   
 
 автор: helovek   (18.06.2008 в 20:26)   письмо автору
 
   для: vitali   (18.06.2008 в 11:11)
 

Спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования