[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод файлов
Rocklviv
Всем привет!
Собсна, есть скрипт который выводит листинг файлы из директории !

<?php 
function
file_size ($filename) {
if (!file_exists($filename)) return "file missing";
$filesize = filesize($filename);

if($filesize > 1024) {
$filesize = ($filesize/1024);
if($filesize > 1024) {
$filesize = ($filesize/1024);
if($filesize > 1024) {
$filesize = ($filesize/1024);
$filesize = round($filesize, 1);
return $filesize." ГБ";
} else {
$filesize = round($filesize, 1);
return $filesize." MБ";
}
}
else {
$filesize = round($filesize, 1);
return $filesize." Кб";
}
}
else {
$filesize = round($filesize, 1);
return $filesize." байт";
}

}

foreach (glob("*.dem") as $filename) {
echo '<tr><td><a href = "'.$filename.'">'.$filename.'</a></td><td>'.file_size($filename).'</td></tr>';
}

?>


Вот и вопрос, как сделать чтобы он выводил по заданному шаблону имени, чтобы сделать фильтр по дате !
Файлы имеют вот такого рода имена: 2011-08-12-0040-de_inferno.dem

Заранее благодарен!



Спустя 40 минут, 49 секунд (13.08.2011 - 10:43) Invis1ble написал(а):
заюзать preg_match()

Спустя 1 час, 14 минут, 25 секунд (13.08.2011 - 11:57) Russia написал(а):
если нужно сравнивать только с датой то возьми первые 10 символов функцией substr и сравнивай с нужной датой.

Спустя 2 дня, 1 час, 45 минут, 38 секунд (15.08.2011 - 13:43) Rocklviv написал(а):
Вот припустим:

$get = substr($filename, 0, 10);


Выводит: 2011-08-12! Гуд!

А вот как вывести все файлы с датой: 2011-08-12!
как сделать сравнение полученого $get, с полным именем файла?

пните, куда копать! :D

Спустя 22 минуты, 19 секунд (15.08.2011 - 14:05) Invis1ble написал(а):
glob('2011-08-12_*.dem');

Спустя 7 часов, 30 минут, 25 секунд (15.08.2011 - 21:35) Rocklviv написал(а):
echo '<select><option value="'.glob('$get*.dem').'">'.glob('$get*.dem').'</option></select>';


можете подсказать, почему этот вариант не срабатывает?
этот вариант просто выводит <select box>с Array!

Спустя 4 минуты, 35 секунд (15.08.2011 - 21:40) Invis1ble написал(а):
1. Потому что glob() возвращает массив
2. Переменные в одинарных кавычках не интерпретируются

Спустя 19 дней, 19 часов, 18 минут, 32 секунды (5.09.2011 - 16:59) Rocklviv написал(а):
Вопрос решен!!
Собсна, вот и решение:
<?php
function
file_size ($filename) {
if (!file_exists($filename)) return "file missing";
$filesize = filesize($filename);

if($filesize > 1024) {
$filesize = ($filesize/1024);
if($filesize > 1024) {
$filesize = ($filesize/1024);
if($filesize > 1024) {
$filesize = ($filesize/1024);
$filesize = round($filesize, 1);
return $filesize." ГБ";
} else {
$filesize = round($filesize, 1);
return $filesize." MБ";
}
}
else {
$filesize = round($filesize, 1);
return $filesize." Кб";
}
}
else {
$filesize = round($filesize, 1);
return $filesize." байт";
}

}

echo '
<form action="" method="POST">
<label>Input date like: 2011-07-11</label>
<input type = "text" name = "DATE" /> Enter Date <br />
<input type="submit" name="search" />
</form>
'
;
$date = $_POST['DATE'];

$files = glob('*.dem');
sort($files);
echo '<table>';
foreach ($files as $filename) {
if (substr($filename, 0, 10) == $date) {
echo '<tr><td><a href = "'.$filename.'">'.$filename.'</a></td><td>'.file_size($filename).'</td></tr>';
}

}

?>


З.Ы. Если есть какието замечания, с радостью выслушаю!

Спустя 5 минут, 55 секунд (5.09.2011 - 17:05) Invis1ble написал(а):
Rocklviv
на 99.9% уверен, что твоя ф-ция некорректно определяет размер файлов

Спустя 11 минут, 31 секунда (5.09.2011 - 17:16) Rocklviv написал(а):
функция filesize - возвращает размеры в байтах! правильно?

собсна, от чего я и отталкивался!
получил размер - сверил с файлом! если больше 1024 байт идём дальше, и так до Гб!

Для проверки: http://demos.rocknet.pp.ua/

Спустя 12 минут, 51 секунда (5.09.2011 - 17:29) Invis1ble написал(а):
Rocklviv
Цитата
получил размер - сверил с файлом! если больше 1024 байт идём дальше, и так до Гб!

я не об этом, а о кешировании результатов filesize()

Спустя 3 минуты, 43 секунды (5.09.2011 - 17:33) Rocklviv написал(а):
Цитата (Invis1ble @ 5.09.2011 - 14:29)
Rocklviv
Цитата
получил размер - сверил с файлом! если больше 1024 байт идём дальше, и так до Гб!

я не об этом, а о кешировании результатов filesize()

а можно об этом подробнее?

З.Ы.
А если я в конце своей функции добавлю clearstatcache(); это исправит ситуацию ?

Спустя 30 минут, 58 секунд (5.09.2011 - 18:04) Invis1ble написал(а):
Rocklviv
если у тебя размер файлов не изменяется, то все нормально будет работать, но если нет - ф-ция будет работать неправильно

Цитата
А если я в конце своей функции добавлю clearstatcache(); это исправит ситуацию ?

да
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.