无法重命名具有 PHP 的文件夹中的最新文件

Unable to Rename the latest file in a folder with PHP

我想重命名文件夹中最新添加的文件,但不知何故我的代码无法正常工作。可以帮忙吗!

例如,如果最新的文件是“file_0202.json” 我想将其更改为“file.json”

这是我的代码

<?php

$files = scandir('content/myfiles', SCANDIR_SORT_DESCENDING);
$selected_file = $files[0];

$new_filename = preg_replace('/_[^_.]*\./', '.', $selected_file);

if(rename($selected_file, $new_filename, ))
{
echo 'renamed';
}
else {
echo 'can not rename';
}

?>

最好用glob()。 glob() returns 使用的路径和文件名。

然后您必须按上次更改的文件排序。您可以为此使用 usort and filemtime

$files = glob('content/myfiles/*.*');

usort($files,function($a,$b){return filemtime($b) <=> filemtime($a);});

$selected_file = $files[0];
$new_filename = preg_replace('/_[^_.]*\./', '.', $selected_file);
if(rename($selected_file, $new_filename))
{
  echo 'renamed';
}
else {
  echo 'can not rename';
}

如有必要,您可以限制搜索的文件,而不是 *.*。例如 *.json 。请小心您的正则表达式,以免它改变路径。