Как получить абсолютно все переменные GET-запроса в php?
Пробовал так, но это не работает:
<?php
$str = "";
foreach ($_GET as $key => $value) {
$str .= $key . " - " . $value . PHP_EOL;
}
echo $str;
?>
UPD (Решение): Таким образом переменные не получить, нужно парсить $_SERVER['QUERY_STRING']
<?php
$str = "";
$query = explode('&', $_SERVER['QUERY_STRING']);
foreach($query as $param)
{
list($name, $value) = explode('=', $param, 2);
$str = $str . $value . PHP_EOL;
}
echo $str;
?>
Ответы (1 шт):
Автор решения: cy4oHok
→ Ссылка
Решение простое
preg_match_all("/(\w+)\=(\w+)[&]?/", parse_url( $_SERVER['REQUEST_URI'])['query'], $matches );
var_dump( $matches );
На примере URL-а вида ?utm_source=1e&utm_content=2&utm_campaign=3&utm_term=4
результат
array (size=3)
0 =>
array (size=4)
0 => string 'utm_source=1e&' (length=14)
1 => string 'utm_content=2&' (length=14)
2 => string 'utm_campaign=3&' (length=15)
3 => string 'utm_term=4' (length=10)
1 =>
array (size=4)
0 => string 'utm_source' (length=10)
1 => string 'utm_content' (length=11)
2 => string 'utm_campaign' (length=12)
3 => string 'utm_term' (length=8)
2 =>
array (size=4)
0 => string '1e' (length=2)
1 => string '2' (length=1)
2 => string '3' (length=1)
3 => string '4' (length=1)