Ralf: Parsen von foo=bar&dings=bums&so=undso

Hi,

ich haben einen String der Form:

$s = 'foo=bar&dings=bums&so=undso';

Wie kann ich den so parsen, dass ich ein array bekomme das mir folgendes liefert:

echo $arr['foo'] Ausgabe => bar
echo $arr['dings'] Ausgabe => bums
echo $arr['so'] Ausgabe => undso

MfG
Ralf

  1. Moin!

    wenn Du nach php query string parsen suchst stoesst Du auf die php Dokumentation. parse_str sollte Dein Problem loesen.

    --
    Signaturen sind blöd!
  2. Hello Ralf,

    ich haben einen String der Form:

    $s = 'foo=bar&dings=bums&so=undso';

    Wie kann ich den so parsen, dass ich ein array bekomme das mir folgendes liefert:

    echo $arr['foo'] Ausgabe => bar
    echo $arr['dings'] Ausgabe => bums
    echo $arr['so'] Ausgabe => undso

    versuche es doch mal mit einer fertigen Funktion von PHP

    http://de2.php.net/manual/en/function.parse-str.php

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Hallo,

    $s = 'foo=bar&dings=bums&so=undso';
    echo $arr['foo'] Ausgabe => bar

    Wie die anderen schon geschrieben haben gibt es fertige Funktionen dafür die man nutzen sollte. Nur falls die nicht das machen was man will könnte man es so hinbekommen (wobei da sehr viele Ausnahmefälle nicht beachtet werden) ungetestet:

    function parse_query($string) {  
        $ret_arr = array();  
      
        $pairs = explode("&", $string);  
        foreach($pairs as $pair) {  
            list($key, $value) = explode("=", $pair);  
            $ret_arr[$key] = $value;  
        }  
      
        return $ret_arr;  
    }  
      
    parse_query("a=b&c=d");  
    // => array("a" => "b", "c" => "d")
    

    In Ruby könnte man übrigens z.b. die String-Klasse zur Laufzeit um diese Methode erweitern (ob sie da hin gehören sollte ist eine andere Frage, das sollte natürlich ins CGI-Modul, aber nur um ein paar Vorteile von Ruby aufzuzeigen):

    class String  
        def parse_query  
            Hash[self.split("&").map {|pair| pair.split("=")}]  
        end  
    end  
      
    "a=b&c=d".parse_query  
    # => {"a"=>"b", "c"=>"d"} 
    

    Hier sieht man dass Ruby auch sehr viele Anleihen aus Funktionalen Sprachen hat.

    Jeena