|
|
|
| Такой скрипт выводит содержание каталога вместе с расширением имен файлов:
<?php
$dir = opendir("somedir");
while ($file = readdir ($dir))
{
echo "$file<br>";
}
closedir($dir);
?>
А как сделать так, что бы выводились только имена файлов, без расширения? | |
|
|
|
|
|
|
|
для: killah
(24.08.2006 в 21:52)
| |
<?php
$dir = opendir("somedir");
while ($file = readdir ($dir))
{
echo basename ($file, ".html")"<br>"; //выведет названия файла без .html
}
closedir($dir);
?>
|
Я помню как-то давно определял все арсширения файлов в данном каталоге, но сркипт получился довольно большим, если анйду, то вывешу | |
|
|
|
|
|
|
|
для: 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>";
}
##########################################################
?>
|
| |
|
|
|
|
|
|
|
для: 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);
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(24.08.2006 в 22:29)
| | ты што этоЖ медленные регулярные выраЖениЯ!!!!))) | |
|
|
|
|
|
|
|
для: deman-b
(24.08.2006 в 22:34)
| | а у тебя не будет работать, если
$name = "pic.ture.jpg";
:P :P :P =))
зы: не такие они и медленные... | |
|
|
|
|
|
|
|
для: kasmanaft
(24.08.2006 в 22:38)
| | про твой скрипт ..
а если ф каталоге есть файл типа "date.1153954152" ???
ЗЫ! | |
|
|
|
|
|
|
|
для: kasmanaft
(24.08.2006 в 22:38)
| | а теперь предстафь, если у тебя ф каталоге 1000 файлоф!! )))) | |
|
|
|
|
|
|
|
для: deman-b
(24.08.2006 в 22:47)
| | это уже имхо не расширение и обрабатывать его не нужно ... конечно, если нужно - пару сек. и все готово ... с помощью рег. выражений можно сделать чего угодно...
а вот время работы скриптов при 500 файлах (больше не нашел :))
0.004687 - с использованием строковых ф-й
0.006591 - с использованием рег. выр-й
разница не так велика ...
в конце концов, можно просто "отрезать" последние 4 символа и будет практически то, что нужно | |
|
|
|
|
|
|
|
для: 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);
?>
|
| |
|
|
|
|
|
|
|
для: deman-b
(24.08.2006 в 23:39)
| | Люди! Я конечно понимаю всё, но вряд ли человеку нужно вывести несколько тысяц файлов... | |
|
|
|
|
|
|
|
для: DEM
(24.08.2006 в 23:50)
| | Просто человек не хочет понимать что регулярные выражения в теле цикла использовать не стоит! | |
|
|
|
|
|
|
|
для: deman-b
(25.08.2006 в 00:00)
| | Мне кажется он это понимает, но в тоже время он показывает вам, что если файлов будет не очень много, то задержка выполнения скрипта будет не смертельная... | |
|
|
|
|
|
|
|
для: DEM
(25.08.2006 в 01:41)
| | я полностью согласен , но всякое бывает...
ЗЫ и кроме того даже афторы многиХ книг по PHP твердили что по возмоЖности лутше не использовать эти самые выражения... | |
|
|
|
|
|
|
|
для: deman-b
(25.08.2006 в 02:04)
| | Без дела действительно их лучше не использовать, так как ясности в коде они не прибавляют... использовать их оправдано в том случае, если они позволяют сократить объём кода (а, следовательно, и ошибок, которые в нём возникают). | |
|
|
|
|
|
|
|
для: deman-b
(25.08.2006 в 00:00)
| | >Просто человек не хочет понимать что регулярные выражения в теле цикла использовать не стоит!
Это голословное утверждение - вы никогда не сможете сказать будет выполняться скрипт быстро или медленно - люди вообще это очень хреново прогнозируют. Если имеется возможность сделать код короче и яснее - этой возможностью следует воспользоваться. Корефеи от программирования каждый раз предупреждают: Преждевременная оптимизация - корень всех зол. Если под предлогом того, что регулярные выражения не должны испльзоваться в цикле мы не будем их использовать - ещё не факт, что у вас программа получиться быстрее. Регулярные выражения на C написаны, а программа выполняющая их работу будет написана на PHP. | |
|
|
|