正则表达式的文件路径

问题描述:

我想验证上传的文件在php中的路径,必须使用正则表达式验证,而不是本机函数。正则表达式的文件路径

是我得到的路径是:

​​

所以,当我试这条道路与/^[a-zA-Z0-9\-\_:\\]*\Z/假(我想这是因为该路径有反斜杠\

有使用正则表达式验证PHP和PHP上载文件的Linux和Windows服务器路径的方法?

+0

你忘了冒号:。 – Gene 2013-03-24 19:18:21

+0

仍然失败... – 2013-03-24 19:22:40

+0

尝试将Windows路径上的反斜杠的所有实例替换为正斜杠。如果您打开命令提示符,您仍然可以通过/或\访问文件。 – djthoms 2013-03-24 19:24:09

$text = 'C:\xampp\tmp\php33DB.tmp'; 
preg_match("#^[a-zA-Z0-9_\\\\:.-]+#",$text,$out); 
print_r($out); 

输出:

Array ([0] => C:\xampp\tmp\php33DB.tmp) 

但是,此文件是由PHP上传创建的临时文件,我觉得没必要来验证它,因为它是由服务器不是客户端创建,你可以检查mime类型的上传文件,如果文件是通过HTTP Post上传的,请检查is_uploaded_file()。

我建议使用此功能来代替:file_exists

因此,在你的代码,你可以这样做:

if (file_exists($tmpFile)) { 
    // ... do stuff 
}