Удалить файл с прошедшей датой в имени в PHP

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

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

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

2 ответа

Решение

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

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

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

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

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

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

$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 ...
}

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

Другие вопросы по тегам