Perl $ ENV等价于PHP以获取变量

时间:2019-10-18 09:25:33

标签: php perl

我有一个perl文件,该文件获取POST附件的文件名。

my $file_name = $ENV{'HTTP_CONTENT_DISPOSITION'};
$file_name =~ s/^attachment; filename=\"(.*)\"$/$1/;

PHP中的等效项是什么?这仅仅是filename作为POST变量吗?

很抱歉,这是一个菜鸟问题。我的perl不好,我的PHP noob级别也不错。 :)

1 个答案:

答案 0 :(得分:3)

请求标头填充到$_SERVER变量中。

$content_disposition = $_SERVER['HTTP_CONTENT_DISPOSITION'];
if (!$content_disposition) {
    throw new Exception('Content-Disposition header missing');
}
if (preg_match(
    '/^attachment; filename="(?P<file_name>.*)"$/',
    $content_disposition,
    $matches
)) {
    // do something with $matches['file_name']
} else {
    throw new Exception(
        'filename match in Content-Disposition header failed, error: ' .
        preg_last_error()
    );
}

该正则表达式是解析标头(使用任何编程语言)的一种非常差的方法。

您应该真正将任务委托给更可靠的代码,并使用a higher-level library to handle uploads,方法名称为getClientOriginalName