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

Форум PHP

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

 

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

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

тема: Как вывести список файлов без расширения?
 
 автор: killah   (24.08.2006 в 21:52)   письмо автору
 
 

Такой скрипт выводит содержание каталога вместе с расширением имен файлов:

<?php
$dir = opendir("somedir");
while ($file = readdir ($dir))
{
echo "$file<br>";
}
closedir($dir);
?>

А как сделать так, что бы выводились только имена файлов, без расширения?

   
 
 автор: DEM   (24.08.2006 в 22:20)   письмо автору
 
   для: killah   (24.08.2006 в 21:52)
 

<?php
$dir 
opendir("somedir");
while (
$file readdir ($dir))
{
echo 
basename ($file".html")"<br>"//выведет названия файла без .html
}
closedir($dir);
?>


Я помню как-то давно определял все арсширения файлов в данном каталоге, но сркипт получился довольно большим, если анйду, то вывешу

   
 
 автор: deman-b   (24.08.2006 в 22:27)   письмо автору
 
   для: killah   (24.08.2006 в 21:52)
 

Вот так вроде работает

<?php
$test_dir 
"www/test"// Каталог с файлами
$dir dir($test_dir);
$i 0;
$names "";
while (
$entry $dir->read())
{
    if((
$entry != "..") && ($entry != "."))
    {
        
$p strcspn($entry,".");
        
$names[$i] = substr($entry,0,"$p");
        
$i++;
    }
}
$dir->close();

############### Выводинформации в браузер ###############
$count $i;
print 
"Список файлов без расширений:<br>";
for(
$i 0$i $count$i++)
{
   print 
$names[$i]."<br>";
}
##########################################################
?>

   
 
 автор: kasmanaft   (24.08.2006 в 22:29)   письмо автору
 
   для: killah   (24.08.2006 в 21:52)
 

Или вот так

<?php
$dir 
opendir("somedir");
while (
$file readdir ($dir))
{
$file preg_replace("/^(.*)\.[\w]{1,3}$/""$1"$file);
echo 
"$file<br>";
}
closedir($dir);
?>

   
 
 автор: deman-b   (24.08.2006 в 22:34)   письмо автору
 
   для: kasmanaft   (24.08.2006 в 22:29)
 

ты што этоЖ медленные регулярные выраЖениЯ!!!!)))

   
 
 автор: kasmanaft   (24.08.2006 в 22:38)   письмо автору
 
   для: deman-b   (24.08.2006 в 22:34)
 

а у тебя не будет работать, если
$name = "pic.ture.jpg";
:P :P :P =))

зы: не такие они и медленные...

   
 
 автор: deman-b   (24.08.2006 в 22:43)   письмо автору
 
   для: kasmanaft   (24.08.2006 в 22:38)
 

про твой скрипт ..
а если ф каталоге есть файл типа "date.1153954152" ???
ЗЫ!

   
 
 автор: deman-b   (24.08.2006 в 22:47)   письмо автору
 
   для: kasmanaft   (24.08.2006 в 22:38)
 

а теперь предстафь, если у тебя ф каталоге 1000 файлоф!! ))))

   
 
 автор: kasmanaft   (24.08.2006 в 23:02)   письмо автору
 
   для: deman-b   (24.08.2006 в 22:47)
 

это уже имхо не расширение и обрабатывать его не нужно ... конечно, если нужно - пару сек. и все готово ... с помощью рег. выражений можно сделать чего угодно...

а вот время работы скриптов при 500 файлах (больше не нашел :))
0.004687 - с использованием строковых ф-й
0.006591 - с использованием рег. выр-й
разница не так велика ...

в конце концов, можно просто "отрезать" последние 4 символа и будет практически то, что нужно

   
 
 автор: deman-b   (24.08.2006 в 23:39)   письмо автору
 
   для: kasmanaft   (24.08.2006 в 23:02)
 

2088 файлоф (WINDOWS/system32) :о)
строковые функции: 0,08 сек.
рег. выражения: 0.23сек.

Разнитса больше чем в два разА!!!
и это только вывод списка файлов! но этим же код программы не ограничетса!!!

вот чем тестировал:

<?php
define
("START_TIME"microtime(true));

//код

printf("<small>Время выполнения: %.2f c</small>"microtime(true)-START_TIME);
?>

   
 
 автор: DEM   (24.08.2006 в 23:50)   письмо автору
 
   для: deman-b   (24.08.2006 в 23:39)
 

Люди! Я конечно понимаю всё, но вряд ли человеку нужно вывести несколько тысяц файлов...

   
 
 автор: deman-b   (25.08.2006 в 00:00)   письмо автору
 
   для: DEM   (24.08.2006 в 23:50)
 

Просто человек не хочет понимать что регулярные выражения в теле цикла использовать не стоит!

   
 
 автор: DEM   (25.08.2006 в 01:41)   письмо автору
 
   для: deman-b   (25.08.2006 в 00:00)
 

Мне кажется он это понимает, но в тоже время он показывает вам, что если файлов будет не очень много, то задержка выполнения скрипта будет не смертельная...

   
 
 автор: deman-b   (25.08.2006 в 02:04)   письмо автору
 
   для: DEM   (25.08.2006 в 01:41)
 

я полностью согласен , но всякое бывает...

ЗЫ и кроме того даже афторы многиХ книг по PHP твердили что по возмоЖности лутше не использовать эти самые выражения...

   
 
 автор: cheops   (25.08.2006 в 12:35)   письмо автору
 
   для: deman-b   (25.08.2006 в 02:04)
 

Без дела действительно их лучше не использовать, так как ясности в коде они не прибавляют... использовать их оправдано в том случае, если они позволяют сократить объём кода (а, следовательно, и ошибок, которые в нём возникают).

   
 
 автор: cheops   (25.08.2006 в 12:33)   письмо автору
 
   для: deman-b   (25.08.2006 в 00:00)
 

>Просто человек не хочет понимать что регулярные выражения в теле цикла использовать не стоит!
Это голословное утверждение - вы никогда не сможете сказать будет выполняться скрипт быстро или медленно - люди вообще это очень хреново прогнозируют. Если имеется возможность сделать код короче и яснее - этой возможностью следует воспользоваться. Корефеи от программирования каждый раз предупреждают: Преждевременная оптимизация - корень всех зол. Если под предлогом того, что регулярные выражения не должны испльзоваться в цикле мы не будем их использовать - ещё не факт, что у вас программа получиться быстрее. Регулярные выражения на C написаны, а программа выполняющая их работу будет написана на PHP.

   
Rambler's Top100
вверх

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