parse_url() und parse_str() - warum immer reguläre Ausdrucke, wenn es doch so schöne funktionen dafür gibt?
Javascript ist gefragt.
Heute ist es sehr heiß :)
Aber dann halt JavaScript - da hat das Denken schon jemand anderer übernommen:
http://stevenlevithan.com/demo/parseuri/js/
Liefert auch zuverlässig das richtige Ergebnis.