Помогите с одной штукой.

event

Создатель
Регистрация
26 Июл 2011
Сообщения
19
Реакции
2
Доброй ночи !
Ребята есть такой скрипт:
PHP:
<?


require_once("include/bittorrent.php");
dbconn();
loggedinorreturn();
stdhead();
if (get_user_class() < UC_MODERATOR) {
stderr($tracker_lang['error'], $tracker_lang['access_denied']);
die();
}

//ini_set('display_errors', 'On'); 

$ar_tmd = array("png","gif","jpg","jpeg");

if($handle = opendir('cache/'))
{
while(false !== ($file = readdir($handle)))
if($file != "." && $file != "..") unlink('cache/'.$file);
closedir($handle);
stdmsg("Готово", "Очистка кеша завершена успешно.");
}
else {
stderr("Ошибка", "Очистка кеша не завершена.");
}

$df = @disk_free_space(ROOT_PATH);
$dt = @disk_total_space(ROOT_PATH);

stderr("Всего места на сервере: ".mksize($dt).", свободного места: ".mksize($df));

stdfoot();


?>

Он полностью чистит папку cache, как сделать так чтобы он чистил в папке файлы только с расширением .txt?

Спасибо за внимание, буду благодарен за помощь. :)
 
PHP:
<?


require_once("include/bittorrent.php");
dbconn();
loggedinorreturn();
stdhead();
if (get_user_class() < UC_MODERATOR) {
stderr($tracker_lang['error'], $tracker_lang['access_denied']);
die();
}

//ini_set('display_errors', 'On'); 

$ar_tmd = array("png","gif","jpg","jpeg");

if($handle = opendir('cache/'))
{
while(false !== ($file = readdir($handle)))
if($file != "." && $file != ".." && substr_count($file,'.txt')>=1) unlink('cache/'.$file);
closedir($handle);
stdmsg("Готово", "Очистка кеша завершена успешно.");
}
else {
stderr("Ошибка", "Очистка кеша не завершена.");
}

$df = @disk_free_space(ROOT_PATH);
$dt = @disk_total_space(ROOT_PATH);

stderr("Всего места на сервере: ".mksize($dt).", свободного места: ".mksize($df));

stdfoot();


?>

Что изменилось:

PHP:
if($file != "." && $file != ".." && substr_count($file,'.txt')>=1) unlink('cache/'.$file);
 
substr_count($file,'.txt')>=1
так а если '.txt' в имени файла, а не расширение? например, 'vasya.txt.log'
может все-таки лучше:
PHP:
strtolower(substr($file,-4))=='.txt'
 
так а если '.txt' в имени файла, а не расширение? например, 'vasya.txt.log'
может все-таки лучше:
PHP:
strtolower(substr($file,-4))=='.txt'

Мой способ будет работать в обоих случаях. Учите матчасть.

У меня целый движок построен с нуля на таких вот поисках "в тексте" и работает как часы.
 
О том и речь, что будет работать в обоих случаях, а нужно
Читайте внимательнее задание.

В задании четко сказано удалить все файлы .txt

В задании не сказано, например

есть .txt, .txt.log и другие файлы
и надо удалить только .txt, не удаляя лог

Это вы читайте внимательнее. Мое решение полностью удовлетворяет запросу.

И еще, от правильности поставленного вопроса зависит подход, так что я думаю нет смысла дальше спорить, оба варианта будут работать, ваш чуть точнее. в этом и вся разница.
 
сделать так чтобы он чистил в папке файлы только с расширением .txt
У файлов .txt.log, расширение - log


как вариант, можно еще так делать
PHP:
if($file != "." && $file != ".." && end(explode(".", $file)) == "txt") unlink('cache/'.$file);
 
Назад
Сверху