PHP如何删除类似文件

上传一个名字比原文件名多一些字符的文件,如何判断并删除原文件?如目录里有名称为名为“文档”的文件,我上传一个“文档A”或者“文档123”,如何把原来的“文档”文件删除?i... 上传一个名字比原文件名多一些字符的文件,如何判断并删除原文件?

如目录里有名称为名为“文档”的文件,我上传一个“文档A”或者“文档123”,如何把原来的“文档”文件删除?

if (file_exists($file)) {
unlink($file);
}
这个怎么改写好?
再进一步,原来有“文档ABC”,我传个“文档D”或“文档E”,就把“文档ABC”删掉

网上有遍历整个目录,然后用ereg来匹配对比的,感觉效率太低,就没有$file*这种模糊匹配的么。。。
展开
 我来答
匿名用户
推荐于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'被删除

JovenShao
2014-10-10 · TA获得超过514个赞
知道小有建树答主
回答量:1161
采纳率:80%
帮助的人:623万
展开全部
    $fileName = 'XXX';
    $cmd = 'rm -rf '.$fileName.'*';//这个删除命令可根据系统的不同而进行修改
    exec($cmd, $outs, $return);
    if($return == 0){
        //删除成功
    }else{
        //删除失败输出$outs错误信息
    }
追问
...就是第2行代码在别的系统下不知道怎么写啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
julongshan
2014-10-09 · TA获得超过110个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:239万
展开全部
原来的文件名没有存档?
如果新上传的文件名字符只是简单的在原文件名后面增加的话。可以把新文件名从后往前逐字符截断,判断文件是否存在。找到文件或者字符截完结束
更多追问追答
追问
不是存在数据库内的,只是最开始的一部分重名而已,后面不同位数不确定。。。
追答
$strs = 'abc123';
$l = strlen($strs);
for($i = 1;$i<$l;$i++){
    $test = substr($strs, 0,$l-$i);
    if(file_exists($strs)){
        unlink($strs);
        break;
    }
}

示例代码没涉及到扩展名,这个要你自己处理

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式