1、如果文件名设得有规律,则它们在文件夹下会自然排序,则删除第一个则可;
2、如文件名设得无规律,则:
$file_arr=@glob("dir/*.txt");
foreach($file_arr as $each_file){
$time_arr[]=filemtime($each_file);
}
array_multisort($time_arr,SORT_ASC,SORT_NUMERIC,$file_arr); //按升序排序@unlink($file_arr[0]);
$next_dat_file=preg_replace("/\.txt$/i",".dat",$file_arr[0]);
@unlink($next_dat_file);草写一个,未测有误否,参考一下
2、如文件名设得无规律,则:
$file_arr=@glob("dir/*.txt");
foreach($file_arr as $each_file){
$time_arr[]=filemtime($each_file);
}
array_multisort($time_arr,SORT_ASC,SORT_NUMERIC,$file_arr); //按升序排序@unlink($file_arr[0]);
$next_dat_file=preg_replace("/\.txt$/i",".dat",$file_arr[0]);
@unlink($next_dat_file);草写一个,未测有误否,参考一下
除了后缀不同,名字的格式是:deleteBackupYYYYMMDDHHIISS,其中的YYYYMMDDHHIISS是文件创建的时间。
下面是我写的代码,测试通过,呵呵
不过还是谢谢你们的参与,当时我还真的迷茫了
给人帮忙,不管代码是否优秀,能完成任务就交差了,呵呵
谢谢你们的指教$i = 0;
$deldatname = "deleteBackup99999999999999.dat";
$deltxtname = "";
$deldir = opendir($filename);
while ($f = readdir($deldir))
{
if (($f != ".") && ($f != "..") && ereg('^deleteBackup[0-9]+.dat$',$f))
{
$i++;
}
}
if ($i == "99")
{
$deldir = opendir($filename);
while ($f = readdir($deldir))
{
if (($f != ".") && ($f != "..") && ereg('^deleteBackup[0-9]+.dat$',$f))
{
//对文字列进行比较
if(strnatcmp($f, $deldatname) < 1)
{
$deldatname = $f;
$deltxtname = substr_replace($f, "txt", 27);
}
}
}
//删除选中的文件
@unlink($filename.$deldatname);
@unlink($filename.$deltxtname);
我会尝试best_inh(一无所)兄的方法,争取更好
另外谢谢wildlily980(小李)兄的鼓励,刚做php几天而已,以后还得多指教
最郁闷的就是这个php系统是用的php4版本,新版的方法基本都是报错
所以都是小心翼翼
呵呵,结贴
不麻烦大家了