PHP parse URL – URL String in Bestandteile zerlegen

PHP bringt eigentlich eine eigene Funktion zum parsen von URLS mit: url_parse(). Diese hat aber einen kleinen Nachteil. Die URL Parameter werden nur als ein einziges gemeinsames Bestandteil zurückgegeben. Meistens möchte man aber die Parameter einzeln haben. Das lässt sich dann entweder mit einem explode machen oder eben mit der hier vorgestellten Methode ganz einfach realisieren.

Beispiel: So wird normalerweise ein URL-String mit PHP in seine Bestandteile zerlegt

$url=parse_url('http://www.tld.de/seite.php?id=23&sort=true');

Dann schaut $url wie folgt aus:

Array
(
    [scheme] => http 
    [host] => www.tld.de 
    [path] => /seite.php 
    [query] => id=23&sort=true
)

Das Problem liegt nun jetzt noch darin, dass die Parameter nicht einzeln extrahiert wurden. Beim Parsen einer URL ist man aber meistens ja darauf scharf! Hier hilft eine Funktion von „ashley at ashleywilson dot com dot au“:

PHP get URL Parameter

function parse_url_detail($url){
    $parts = parse_url($url);
    if(isset($parts['query'])) {
        parse_str(urldecode($parts['query']), $parts['query']);
    }
    return $parts;
}

So sehe

$url=parse_url('http://www.tld.de/seite.php?id=23&sort=true');

dann aus:

Array 
( 
  [scheme] => http 
  [host] => www.tld.de 
  [path] => /seite.php 
  [query] => Array 
  ( 
    [id] => 23 
    [sort] => true 
  ) 
)

Und Du könntest mit $url['query']['id'] oder $url['query']['sort'] auf die einzelnen Parameter zugreifen.

1 Kommentar » Schreibe einen Kommentar

  1. Eben als Anregung kurz eingebaut und zunächst irritiert gewesen; hab später dann gemerkt: es wird ja nur die Standard-PHP-parse_url-Funktion aufgerufen, nicht die neue (detaillierte). Noch ein „_detail“ rein und alles wird gut.

    Danke für die Anregung und den Schnipsel.

    PS: parse_str enthält glaube ich url_decode bereits. Könnte man noch ein paar Bits sparen …

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


%d Bloggern gefällt das: