2

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

我得到的路径是:

C:\xampp\tmp\php33DB.tmp

所以,当我用/^[a-zA-Z0-9\-\_:\\]*\Z/返回 false 测试这条路径时。(我认为这是因为路径有反斜杠\

有一种方法可以仅使用正则表达式验证在 PHP 中上传的文件的 Linux 和 Windows 服务器的路径吗?

4

2 回答 2

3
$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类型,如果文件上传则检查is_uploaded_file()通过 HTTP 发布。

于 2013-03-24T19:33:25.993 回答
0

我建议改用这个函数:file_exists

所以在你的代码中你可以这样做:

if (file_exists($tmpFile)) {
    // ... do stuff
}
于 2013-03-24T19:39:22.553 回答