Как получить абсолютно все переменные 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)
→ Ссылка