Unserialize manchmal gibt false zurück
Habe ich diese Funktion in meine Anwendung:
public function direct($theTree)
{
$aTreeRoot = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $theTree);
return unserialize($aTreeRoot);
}
Sollte es nie false zurückgeben, aber in den error-logs die Fehler halten, auftreten, die sagt, dass es falsch zurückgegeben.
Kann ich jedoch nicht replizieren den Fehler in meiner Anwendung. Ich werde versuchen, jede mögliche Weg, aber es funktioniert immer.
Gibt es etwas falsch mit der Funktion?
Den $theTree
kommt von der Sitzung.
Edit: Das regex ist es da: unserialize
- Suche für meine regex, die es in die Kommentare. Es soll um ein problem zu lösen.
Ist dies
Ja, ohne, dass die regex die unserialize funktioniert nicht. Ich bin putting ein kompliziertes Objekt in die session serialisiert und ohne regex gibt es Probleme Deserialisieren von es. Die regex löst das problem aber immer noch, es scheint unserialize manchmal gibt false zurück.
Dreifach-check, dass Ihre serialisierte Zeichenfolge wird nicht abholen keine zusätzlichen Zeichen auf dem Weg irgendwo, änderungen der Codierung usw.. Können Sie ein Beispiel geben, dass es nicht?
Ich bin converting-string von Windows-1250 UTF-8 nach serialisieren. Nicht sicher, ob das ist significiant.
und Fenster-1250 ist nicht eine direkte Teilmenge von UTF-8. einige Charakter verpassen könnte in der Codierung. Also, versuchen Sie mit einfachen Zeichen der ersten.
preg_replacing
wirklich notwendig? Das Beispiel dieser Igor Charakter gibt, der dazu aufgefordert diese Problemumgehung ist eine völlig ungültige serialisierte Zeichenfolge zu beginnen. Ich bin mir nicht bewusst, irgendwelche bugs erfordern würde. Wenn Ihr string serialisiert wurde mit serialize
war und nicht geändert, es sollte unserialize
gut. Hast du dieses problem selbst, oder hast du Sie einfach legen Sie es in "weil es eigentlich zu lösen ein - problem"?Ja, ohne, dass die regex die unserialize funktioniert nicht. Ich bin putting ein kompliziertes Objekt in die session serialisiert und ohne regex gibt es Probleme Deserialisieren von es. Die regex löst das problem aber immer noch, es scheint unserialize manchmal gibt false zurück.
Dreifach-check, dass Ihre serialisierte Zeichenfolge wird nicht abholen keine zusätzlichen Zeichen auf dem Weg irgendwo, änderungen der Codierung usw.. Können Sie ein Beispiel geben, dass es nicht?
Ich bin converting-string von Windows-1250 UTF-8 nach serialisieren. Nicht sicher, ob das ist significiant.
und Fenster-1250 ist nicht eine direkte Teilmenge von UTF-8. einige Charakter verpassen könnte in der Codierung. Also, versuchen Sie mit einfachen Zeichen der ersten.
InformationsquelleAutor Richard Knop | 2010-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe vor einer ähnlichen Art von Problem zuvor. Ich u zeigen, wie habe ich es gelöst.
Nachdem Sie serialisieren von Daten, anwenden von base64_encode()
e.g
Und wenn du unserialize es
z.B.
Versuchen . Hoffe, dass die arbeiten für die u-als auch. Viel Glück
Ich arbeite mit wordpress, und das hat nicht funktioniert
für mich funktioniert in php! aha!
was ist diese Hexerei? Es funktioniert tatsächlich... Aber wäre schön zu verstehen!!!
base64-codiert die Daten als ascii-string, unter Umgehung der charset-Probleme von deiner db auf Ihrem server-Skript, und wenn Sie kratzen die Daten aus dem Netz dann: von der Quelle, um die db wieder auf Ihr Skript. Dinge können schief gehen bei der übersetzung. Offensichtlich
serialize
unserialize
nicht immer codieren, zu decodieren, selbst, so dass die Leute Probleme damit haben. Wenn Sie base64, verlieren Sie Blick auf die Daten direkt bei der Anzeige von raw-Einträge aus der db.InformationsquelleAutor Poonam Bhatt
Ist der Wert von
magic_quotes_gpc
die gleichen sowohl auf die Produktion und den lokalen Rechner?InformationsquelleAutor racetrack
Habe ich einige zufällige Verhalten auf meinem code, aber ich denke ich habe herausgefunden warum. Ich war mit UTF-8-Zeichensatz, und in meinem Produktions-server scheint es zu produzieren diese Probleme.
Versuchen Sie dies:
Arbeitete für mich, hoffe, es wird auch für Sie
InformationsquelleAutor Federico Giraldi
Ich glaube, dass die Flucht die Daten, die Sie serialisieren würde auch funktionieren, als alternative zu base64.
InformationsquelleAutor badcrocodile