Variablen aus URL empfangen und ausgeben

ber

Mitglied
Hallo, wie kann ich denn alle Arrays, die in einer URL übergeben werden, empfangen und genauso sortiert wieder ausgeben:

URL: index.php?&Bauen[]=1&Bauen[]=2&Bauen[]=3&Kalksand[]=1&Kalksand[]=2&


AUSGABE: &Bauen[]=1&Bauen[]=2&Bauen[]=3&Kalksand[]=1&Kalksand[]=2&

Grüße & Danke

ber
 
Hallo & Danke,

hmm, jetzt kommen in der URL noch Variablen vor, die ich nicht gebrauchen kann. Kann ich das auch mit get irgendwie hinbekommen?

Ich denke, dass das der Abruf so geht, weiss aber leider nicht, wie ich dann die Ausgabe in eine Variable mache.

PHP:
foreach($_GET AS $get_key => $get)	{
		if(is_array($get)){
    	{

Viele Grüße

ber
 
Zuletzt bearbeitet:
Hallo,

du könntest den QUERY_STRING, wie von yaslaw beschrieben verwenden. Den holst du dir und teilst ihn an Hand der "&" in ein Array (Funktion: explode()). Danach gehst du alle Elemente durch und schaust, ob vor dem "=" die Klammern "[]" stehen. Wenn ja, dann schreibe den Wert in eine temporäre Variable. Am Ende des Vorgangs werden die Elemente wieder zusammengebaut.

Eingabe: asd=3&Bauen[]=1&Bauen[]=2&cef=33&Bauen[]=3&Kalksand[]=1&Kalksand[]=2&a=b&ff
PHP:
$eingabe = "asd=3&Bauen[]=1&Bauen[]=2&cef=33&Bauen[]=3&Kalksand[]=1&Kalksand[]=2&a=b&ff"
$params = explode("&", $eingabe);
foreach ($params as $param) {
  if(strpos($param, "[]=") !== false) {
    $temp[] = $param;
  }
}

$ausgabe = implode("&", $temp);

Ausgabe: Bauen[]=1&Bauen[]=2&Bauen[]=3&Kalksand[]=1&Kalksand[]=2

// Edit: ungetestet! Kann funktionieren, muss aber nicht ;)

Gruß
BK
 
Den String selber zerlegen ist unschön.
Ich hab hier zwei beispiele wie man das machen kann unter der Annahme, dass das Kriterium ist, dass der Parameter ein Array sein sollte
PHP:
<?php
$paramUrls = array();
foreach($_GET as $paramName => $param){
    if(is_array($param)){
        foreach($param as $item){
            $paramUrls[] = "{$paramName}[]=$item";
        }
    }    
}
echo implode('&', $paramUrls);
?>

<?php

$paramUrls = array();
$get = array_filter($_GET, create_function('$param', 'return is_array($param);'));
foreach($get as $paramName => $param){
    array_walk($param, create_function('&$item, $key', '$item = "'.$paramName.'[]=$item";'));
    $paramUrls = array_merge($paramUrls, $param);
}
echo implode('&', $paramUrls);
?>
 
Hallo & Dankeschön******

Das ist genial. Das will ich auch können.

Danke auch an "Bratkartoffel".

Viele Grüße

ber
 
Zurück