我想创建一个PHP脚本,删除一个文件夹中的所有照片,但不是最后五个,我不知道如果在PHP中可以知道创建文件的日期,我真的不知道如何这样做,谢谢!
答案 0 :(得分:3)
您可以使用filemtime获取文件的上次修改时间。你提到了创作日期;在Windows系统上,您可以使用filectime获取创建时间,但是在基于Unix的系统上,由于Unix系统不存储文件的创建日期,因此只会获得更改时间。
获得此信息之后,一种基本技术是循环遍历文件夹中的每个文件以获取其修改时间,然后删除除最近5次之外的所有文件。
一个简单的例子,虽然可能有更简洁的方法,
if ($handle = opendir('/path/to/your/folder'))
{
$files = array();
while (false !== ($file = readdir($handle)))
{
if (!is_dir($file))
{
// You'll want to check the return value here rather than just blindly adding to the array
$files[$file] = filemtime($file);
}
}
// Now sort by timestamp (just an integer) from oldest to newest
asort($files, SORT_NUMERIC);
// Loop over all but the 5 newest files and delete them
// Only need the array keys (filenames) since we don't care about timestamps now as the array will be in order
$files = array_keys($files);
for ($i = 0; $i < (count($files) - 5); $i++)
{
// You'll probably want to check the return value of this too
unlink($files[$i]);
}
}
答案 1 :(得分:0)
不确定这是否有帮助,但我有类似的需要想知道文件创建时间,所以我可以根据上传/创建时间订购它们:
//获取所有带.jpg,.gif和.png扩展名的图像文件
$images = glob('images/{*.jpg,*.gif,*.png}', GLOB_BRACE);
//按上传/上次修改时间排序图片
array_multisort(array_map('filemtime', $images), SORT_NUMERIC, SORT_DESC, $images);
希望这可以帮助你以某种方式或其他人来帮助你。
答案 2 :(得分:0)
PHP手册中的一些注释
注意:注意:在大多数Unix文件系统中, 一个文件被认为是改变了 inode数据被更改;也就是说什么时候 权限,所有者,组或 来自inode的其他元数据是 更新。另请参见filemtime()(其中 是你想要的时候想要的 创建“上次修改”的页脚 网页)和fileatime()。
注意:还要注意在某些Unix中 文本引用文件的ctime 作为时间的创造时间 文件。这是错的。没有 大多数Unix文件的创建时间 Unix文件系统。
注意:请注意时间分辨率可能 不同于一个文件系统 另一个。
从那时起,我建议您使用以下内容命名文件:“pic-123456789.jpg” “123456789”代表创建日的时间()值,然后执行文件夹扫描,获取时间,并删除所有但不是最后5个