Perl $ ENV эквивалент в PHP для получения переменной - PullRequest
0 голосов
/ 18 октября 2019

У меня есть файл perl, который получает имя файла вложения POST.

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

Что такое эквивалент в PHP? Это просто filename как переменная POST?

Извините, если это вопрос нуба. Мой Perl плох и мой уровень PHP noob. :)

1 Ответ

3 голосов
/ 18 октября 2019

Заголовки запроса заполняются в переменную $_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()
    );
}

Это регулярное выражение - довольно плохой способ анализа заголовка (на любом языке программирования).

Вы действительно должны делегировать задачу более надежному коду и использовать библиотеку более высокого уровня для обработки загрузок , имя метода - getClientOriginalName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...