PHP-Tutorial-Deserialisierungsmethode

巴扎黑
Freigeben: 2016-11-21 09:25:17
Original
823 Leute haben es durchsucht

Serialisierung ist der Prozess der Konvertierung einer Variablen in eine Zeichenfolge, die gespeichert oder übertragen werden kann. Bei der Deserialisierung wird die Zeichenfolge in die ursprüngliche Variable umgewandelt, damit sie zum richtigen Zeitpunkt verwendet werden kann. Durch die Kombination dieser beiden Prozesse können Daten einfach gespeichert und übertragen werden, wodurch das Programm leichter wartbar wird. Brothers PHP-Training (www.lampbrother.net)
1. Serialisierungs- und Deserialisierungsfunktionen
Dies sind gängige Funktionen zum Serialisieren und Deserialisieren von Daten in PHP.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); /Serialize array
$s = serialize($a);
echo $s;//Ausgabeergebnis: a:3:{s:1:"a";s:5:"Apple" ;s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";}
echo '

//Deserialisierung
$o = unserialize($s);
print_r($o);
//Ausgabeergebnis-Array ( [a] => Apple [ b] = > Banana [c] => Coconut )
?> Wenn Array-Werte Zeichen wie doppelte Anführungszeichen, einfache Anführungszeichen oder Doppelpunkte enthalten, können nach der Deserialisierung Probleme auftreten. Um dieses Problem zu lösen, besteht ein netter Trick darin, base64_encode und base64_decode zu verwenden.
$obj = array();
//Serialisierung
$s = base64_encode(serialize($obj));
//Deserialisierung
$original = unserialize(base64_decode( $s) );
Aber die Base64-Kodierung erhöht die Länge der Zeichenfolge. Um dieses Problem zu lösen, kann es mit gzcompress verwendet werden.
//Definieren Sie eine Funktion zum Serialisieren von Objekten
function my_serialize( $obj )
{
return base64_encode(gzcompress(serialize($obj)));
}
//Deserialisierung
function my_unserialize($txt)
{
return unserialize(gzuncompress(base64_decode($txt)));
}
2. Verwenden Sie json_encode und json_decode
Serialisierung und Deserialisierung im JSON-Format ist eine gute Wahl:
Die Verwendung der Formate json_encode und json_decode ist viel schneller als die Formate Serialisierung und Deserialisierung.

JSON-Format ist lesbar.

Das JSON-Format gibt kleinere Daten zurück als die Serialisierung.

Das JSON-Format ist offen und portierbar. Andere Sprachen können es ebenfalls verwenden.

$a = array('a' => 'Apfel' ,'b' => 'Banane' , 'c' => 'Kokosnuss');

// Serialisiertes Array

$s = json_encode($a);

echo $s;

//Ausgabeergebnis: {"a": "Apple", "b" :"Banane", "c": "Kokosnuss"}

echo '

'

//Deserialisierung

$o = json_decode($s);

Im obigen Beispiel ist die Ausgabelänge von json_encode offensichtlich kürzer als die Ausgabelänge von serialize im vorherigen Beispiel.
3. var_export und eval
Die Funktion var_export gibt die Variable als String aus, führt den String als PHP-Code aus und deserialisiert ihn, um den Inhalt der Originalvariablen zu erhalten.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//Serialisiertes Array
$ s = var_export($a, true);
echo $s; => 'Coconut', )
echo '

'
//Deserialisierung
eval('$my_var=' . $s . ';' );
print_r($my_var);

4. wddx_serialize_value und wddx deserialize
wddx_serialize_value können Array-Variablen serialisieren und als XML-Strings ausgeben.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//Serialisiertes Array
$ s = wddx_serialize_value($a);
echo $s;
//Ausgabeergebnis (Quellcode der Ausgabezeichenfolge anzeigen):

< ; data>Applebanana < ;/var>Coconut ; br />
';
//Deserialisierung
$o = wddx_deserialize($s);
print_r($o>); [a] => Apfel [b] => Banane 1 =>Es ist ersichtlich, dass XML-Tags viele Zeichen haben, sodass die Serialisierung dieses Formats immer noch viel Platz einnimmt.

Zusammenfassung
Alle oben genannten Funktionen können beim Serialisieren von Array-Variablen normal ausgeführt werden, bei der Anwendung auf Objekte ist dies jedoch anders. Beispielsweise schlagen serialisierte json_encode-Objekte fehl. Beim Deserialisieren von Objekten haben Deserialisieren und Auswerten unterschiedliche Auswirkungen.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage