Jeena Paradies: Parsen von foo=bar&dings=bums&so=undso

Beitrag lesen

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