【问题标题】:Perl $ENV equivalent in PHP to get variable在 PHP 中等效的 Perl $ENV 以获取变量
【发布时间】:2020-02-15 06:35:50
【问题描述】:

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

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

PHP 中的等价物是什么?这只是 filename 作为 POST 变量吗?

对不起,如果这是一个菜鸟问题。我的 perl 很糟糕,我的 PHP 菜鸟级别。 :)

【问题讨论】:

标签: php perl


【解决方案1】:

请求标头被填充到$_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

【讨论】:

  • 第一次奏效。我将改进解析标题。谢谢你的帮助。 :)
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 2011-03-13
  • 2014-09-29
  • 1970-01-01
  • 2018-10-24
相关资源
最近更新 更多