Hallo,
ich erstelle mit Perl dynamische serialize-Strings (hoffe, das ist der richtige Ausdruck dafür?) die dann über ein hidden input in die DB geschrieben werden.
im Quelltext schaut das dann z.B. so aus:
<input type="hidden" name="ORDERDATA" value="a:10:{s:4:'zone';s:14:'AT';s:6:'anzahl';i:3;s:12:'krabatt_text';s:9:'undefined';s:13:'zahlartrabatt';d:-0.957;s:5:'total';d:35.843;s:13:'krabatt_summe';i:0;s:9:'warenwert';d:31.9;s:13:'zwischensumme';d:36.8;s:7:'versand';d:4.9;s:7:'zahlart';s:23:'Vorauskassa';}">
Das Problem ist jetzt, dass keine "{" und "}" in das Faeld geschrieben werden.
d.h. ich bekomme den String so zurück:
(mit $data =~ s/'/"/g;)
a:10:s:4:"zone";s:14:".....";d:4.9;s:7:"zahlart";s:26:"Rechnung";
und so kann ich ihn natürlich dann nicht unserilisieren.
Habe jetzt schon ne ganze Weile gesucht, aber keine wirklich brauchbare Lösung gefunden.
Meine "Notlösung" schaut so aus:
$data =~ s/a:10:/a:10:\{/g;
$data = $data ."}";
damit kann ich die Werte dann mit
my $tmp = serialize::unserialize($data);
%daten = %$tmp;
my $warenwert = $daten{warenwert};
....
normal auslesen, aber was mache ich, wenn der String mal nicht mit a:10: anfängt?
Da gibt es doch bestimmt eine bessere Lösung?
lg
dobra