Удалить файл с прошедшей датой в имени в PHP - PullRequest
1 голос
/ 27 января 2011

У меня есть менеджер событий, который я делаю, это почти сделано, но одна вещь. У меня есть файл view.php, который просматривает события. однако мне нужно удалить события, которые имеют даты в прошлом.

это плоский файл, поэтому даты хранятся в виде имен файлов в папке data. их имена будут даты. например: "data/Monday, 21 February, 2011.html" будет на эту дату. У кого-нибудь есть идеи, как удалить события (файлы), которые были в прошлом?

спасибо заранее.

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Или лучшим вариантом будет сохранение числовой метки времени вместо текстового формата.Затем вы можете удалить необходимые файлы с чем-то вроде:

$dir = new DirectoryIterator('/path/to/your/files');
foreach($dir as $file) {
    ... extract timestamp from each file ...
    ... if it's less than your cutoff, delete file ...
}

Это избавит вас от необходимости разбирать часть даты в имени файла на значение datetime каждый раз, и вы будетепростое числовое сравнение.

1 голос
/ 27 января 2011

Вы сделали стержень для своей спины с помощью этой схемы именования (также обычно плохая практика - иметь файлы с пробелами в максимально возможной степени), но неважно.

Что вам нужно сделать, так это:

  1. Сканирование целевого каталога с использованием scandir или аналогичного.( glob может быть лучшей ставкой в ​​зависимости от содержимого каталога.)

  2. Конвертировать все действительные (то есть: не "." Или "..")html имя файла в метку времени через strtotime после использования str_replace , чтобы избавиться от части ".html".

  3. unlink файл, если он в прошлом.

...