Я работаю над некоторыми учебными пособиями, чтобы объяснить такие вещи, как GET / POST, и мне нужно проанализировать URI вручную. Следующий код perl работает, но я пытаюсь сделать две вещи:
- перечислить каждый ключ / значение
- быть в состоянии найти одно указанное c значение
Меня не волнует замена специальных символов на пробелы или что-то еще, единственное значение, которое мне нужно получить, должно быть числом. В других языках, которые я использовал, рассматриваемое регулярное выражение должно группировать каждый ключ / значение в одну группу с частью 1 / частью 2, Perl делает то же самое? Если да, то как мне поместить это в карту?
my @paramList = split /(?:\?|&|;)([^=]+)=([^&|;]+)/, $ENV{'REQUEST_URI'};
if(@paramList)
{
print "<h1>The Params</h1><ul>";
foreach my $i (@paramList) {
if($i) {
print "<li>$i</li>";
}
}
print "<ul>";
}
Для запроса, вот базовый c пример ввода:
REQUEST_URI = /cgi-bin/printenv_html.pl?customer_name=fdas&phone_number=fdsa&email_address=fads%40fd.com&taxi=van&extras=tip&pickup_time=2020-01-14T20%3A45&pickup_place=&dropoff_place=Airport&comments=
цель - это следующее, где слева от равенства находится ключ, а справа - значение:
customer_name=fdas
phone_number=fdsa
email_address=fads%40fd.com
taxi=van
extras=tip
pickup_time=2020-01-14T20%3A45
pickup_place=
dropoff_place=Airport
comments=