正则表达式的文件路径
问题描述:
我想验证上传的文件在php中的路径,必须使用正则表达式验证,而不是本机函数。正则表达式的文件路径
是我得到的路径是:
所以,当我试这条道路与/^[a-zA-Z0-9\-\_:\\]*\Z/
假(我想这是因为该路径有反斜杠\
)
有使用正则表达式验证PHP和PHP上载文件的Linux和Windows服务器路径的方法?
答
$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
}
你忘了冒号:。 – Gene 2013-03-24 19:18:21
仍然失败... – 2013-03-24 19:22:40
尝试将Windows路径上的反斜杠的所有实例替换为正斜杠。如果您打开命令提示符,您仍然可以通过/或\访问文件。 – djthoms 2013-03-24 19:24:09