无法重命名具有 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 。请小心您的正则表达式,以免它改变路径。
我想重命名文件夹中最新添加的文件,但不知何故我的代码无法正常工作。可以帮忙吗!
例如,如果最新的文件是“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 。请小心您的正则表达式,以免它改变路径。