PHP 4.3

9.9.2 Zerlegen von Schlüssel-Wert-Zeichenketten

Wir benötigen nun noch ein Skript, welches in der Lage ist, den Cookie auszulesen und die Zeichenkette wieder in ein sinnvolles Array aus Schlüssel-Wert-Paaren zu zerlegen.

Cookies lesen
*1    $i = 0;
*2    $delimiter = "@/@";
      $cookie = $HTTP_COOKIE_VARS["warenkorbCookie"];
      while (strlen($cookie) > 0) {
*3       $delpos = strpos($cookie, $delimiter, 0);
*4       $key = substr($cookie, 0, $delpos);
*5       $cookie = substr($cookie, $delpos + strlen($delimiter));

*6       $delpos = strpos($cookie, $delimiter, 0);
*7       $value = substr($cookie, 0, $delpos);
*8       $cookie = substr($cookie, $delpos + strlen($delimiter));

*9       $warenkorb[$i] = array($key, $value);
*10      $i++;
      }

Unsere Ausleseroutine muss die Zeichenkette Schritt für Schritt in Schlüssel-Wert-Paare auflösen und diese wieder in einem Array ablegen. Für dieses Array benötigt das Skript, wie schon in anderen Beispielen, einen Zähler, der als Laufnummer fungiert. Diese Funktion übernimmt $i in Zeile *1. Als nächstes definieren wir den Delimiter in einer Variablen (*2).

Die Routine durchläuft eine Zeichenkette in einer while-Schleife. Bei jedem Durchlauf der Schleife wird ein Schlüssel-Wert-Paar von der Zeichenkette abgeschnitten und in den Variablen $key und $value abgelegt. Die Punkte *3, *4 und *5 zeigen diesen Vorgang für die Variable $key. Bei Punkt *3 wird zuerst die Position des Delimiters ermittelt und in $delpos gespeichert.
Bei Punkt *4 wird die Funktion substr() benutzt, um den Schlüssel des Schlüssel-Wert-Paares zu ermitteln. Ausgehend von der Anfangsposition 0 bis hin zu der in $delpos gespeicherten Position, werden die in diesem Bereich enthaltenen Zeichen $key zugewiesen.
Anschließend verkürzen wir bei Punkt *5 die Zeichenkette, indem wir nur jenen Teil, der sich nach dem eben ermittelten Schlüssel und dem folgenden Delimiter anschließt, herauskopieren und wieder der Variablen $cookie zuweisen. Beachten Sie, dass wir bei Punkt *5 nur zwei Parameter an die Funktion substr() übergeben. Als dritter Parameter (length) wird dann von PHP automatisch die gesamte restliche Länge der Zeichenkette angenommen.

Für die Zeilen mit den Punkten *6, *7 und *8 wiederholt sich der skizzierte Ablauf für den zum Schlüssel gehörenden Wert, welcher der Variablen $value zugewiesen wird.

Zum Abschluss des Skripts werden in Zeile *9 die Werte von $key und $value in einem Array zusammengefasst, welches wiederum einen Eintrag im Array $warenkorb bildet.

Im Ergebnis liegt ein mehrdimensionales Array $warenkorb vor, welches die Schlüssel-Wert-Paare des Cookies enthält.

Kommentare (0)

Ihr Kommentar

Name