我正在尝试验证 php 中上传文件的路径,必须使用正则表达式而不是本机函数进行验证。
我得到的路径是:
C:\xampp\tmp\php33DB.tmp
所以,当我用/^[a-zA-Z0-9\-\_:\\]*\Z/
返回 false 测试这条路径时。(我认为这是因为路径有反斜杠\
)
有一种方法可以仅使用正则表达式验证在 PHP 中上传的文件的 Linux 和 Windows 服务器的路径吗?
我正在尝试验证 php 中上传文件的路径,必须使用正则表达式而不是本机函数进行验证。
我得到的路径是:
C:\xampp\tmp\php33DB.tmp
所以,当我用/^[a-zA-Z0-9\-\_:\\]*\Z/
返回 false 测试这条路径时。(我认为这是因为路径有反斜杠\
)
有一种方法可以仅使用正则表达式验证在 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类型,如果文件上传则检查is_uploaded_file()通过 HTTP 发布。
我建议改用这个函数:file_exists
所以在你的代码中你可以这样做:
if (file_exists($tmpFile)) {
// ... do stuff
}