PHP如何删除类似文件
上传一个名字比原文件名多一些字符的文件,如何判断并删除原文件?如目录里有名称为名为“文档”的文件,我上传一个“文档A”或者“文档123”,如何把原来的“文档”文件删除?i...
上传一个名字比原文件名多一些字符的文件,如何判断并删除原文件?
如目录里有名称为名为“文档”的文件,我上传一个“文档A”或者“文档123”,如何把原来的“文档”文件删除?
if (file_exists($file)) {
unlink($file);
}
这个怎么改写好?
再进一步,原来有“文档ABC”,我传个“文档D”或“文档E”,就把“文档ABC”删掉
网上有遍历整个目录,然后用ereg来匹配对比的,感觉效率太低,就没有$file*这种模糊匹配的么。。。 展开
如目录里有名称为名为“文档”的文件,我上传一个“文档A”或者“文档123”,如何把原来的“文档”文件删除?
if (file_exists($file)) {
unlink($file);
}
这个怎么改写好?
再进一步,原来有“文档ABC”,我传个“文档D”或“文档E”,就把“文档ABC”删掉
网上有遍历整个目录,然后用ereg来匹配对比的,感觉效率太低,就没有$file*这种模糊匹配的么。。。 展开
3个回答
推荐于2016-02-28
展开全部
$exp='文档abc.txt'; //示例文件名,这个是你上传的文件名,这个变量是必须提供的
$time=filemtime($exp); //获得你的这个文件的创建时间
//根据观察,你的文件名前两个字符是一致的,可使用这种方法获得文件名
$fname=mb_substr($exp,0,2,'gbk');
$a=glob("$fname*.txt"); //搜索以'文档'开头的文件名
foreach($a as $k=>$v){
$itemtime=filemtime($v);
if($itemtime<$time){ //删除以前创建的文件
unlink($v);
}
}
//用法:可在当前目录下首先新建一个'文档a.txt',然后再新建一个文件作为上传文件'文档abc.txt'.
//运行之后,你会发现'文档a.txt'被删除
展开全部
$fileName = 'XXX';
$cmd = 'rm -rf '.$fileName.'*';//这个删除命令可根据系统的不同而进行修改
exec($cmd, $outs, $return);
if($return == 0){
//删除成功
}else{
//删除失败输出$outs错误信息
}
追问
...就是第2行代码在别的系统下不知道怎么写啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原来的文件名没有存档?
如果新上传的文件名字符只是简单的在原文件名后面增加的话。可以把新文件名从后往前逐字符截断,判断文件是否存在。找到文件或者字符截完结束
如果新上传的文件名字符只是简单的在原文件名后面增加的话。可以把新文件名从后往前逐字符截断,判断文件是否存在。找到文件或者字符截完结束
更多追问追答
追问
不是存在数据库内的,只是最开始的一部分重名而已,后面不同位数不确定。。。
追答
$strs = 'abc123';
$l = strlen($strs);
for($i = 1;$i<$l;$i++){
$test = substr($strs, 0,$l-$i);
if(file_exists($strs)){
unlink($strs);
break;
}
}
示例代码没涉及到扩展名,这个要你自己处理
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询