Entwickler-Ecke

Programmiersprachen (Server) - php-funktion unserialize in delphi


j-a-n@gmx.de - Di 27.11.07 11:14
Titel: php-funktion unserialize in delphi
ich stehe grade vor dem problem, ein mit php serialisiertes array in delphi auswerten zu müssen.

also: der von php erstellte string sieht so aus:


Quelltext
1:
a:5:{s:5:"Firma";s:12:"Muster Firma";s:7:"Strasse";s:15:"Musterstraße 10";s:4:"Land";s:2:"AT";s:3:"PLZ";s:4:"0777";s:3:"Ort";s:11:"Musterstadt";}                    


das ganze ist ein assozatives php-array:


Quelltext
1:
2:
3:
4:
5:
Firma => "Muster Firma"
Strasse => "Musterstrasse 10"
Land => "AT"
PLZ => "0777"
Ort => "Musterstadt"



ich suche jetzt eine delphi-funktion, die mir das parsed und z.B. als StingList zurückliefert. Hattet Ihr sowas schon mal?


BenBE - Di 27.11.07 13:12

Was ist daran so kompliziert?

Einfach die Kennzeichen nehmen:
a: Array
s: String
i: Integer
o: Object
r: Referenz
...

und entsprechend die Werte nehmen.

a:<x>:{<items>}
wobei items wieder ein Serialisierungs-String ist und x die Anzahl der Einträge. items besteht aus einer Folge von Schlüssel-Wert-Paaren, wobei als Index s und i zulässig sind; als Value ist alles erlaubt.

s:<x>:<data>
x ist die Länge, dahinter soviele Zeichen an Daten ...

i:<data>
Zahl data

o:<x>:<class>:<y>:{<items>}
Wie Array, nur mit zusätzlicher Klassenbezeichnung

r:<x>
Referenz auf das x. im Serialisierungsstring erzeugte Objekt.

...

Tipp vorweg: Eine direkte Umsetzung in Delphi geht auf Grund des leicht andren Typen-Systems nicht. Du musst also einige Funktionen von PHP ein wenig in Delphi emulieren, wenn Du das vollständig haben willst ...