Parsen von foo=bar&dings=bums&so=undso
Ralf
- php
4 Steel2 Tom0 Jeena Paradies
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
Moin!
wenn Du nach php query string parsen suchst stoesst Du auf die php Dokumentation. parse_str sollte Dein Problem loesen.
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
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