Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Tutorial-Deserialisierungsmethode

PHP-Tutorial-Deserialisierungsmethode

巴扎黑
Freigeben: 2023-03-03 11:32:01
Original
1107 Leute haben es durchsucht

1. Serialisierungs- und Deserialisierungsfunktionen



Dies sind gängige Funktionen zum Serialisieren und Deserialisieren von Daten in PHP.


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

//Serialisiertes Array

$s = serialize($a);

echo $s; 3:{s:1:"a";s:5:"Apfel";s:1:"b";s:6:"Banane";s:1:"c";s:7:"Kokosnuss " ;}

echo '

';

//Deserialisierung

$o = unserialize($s)

print_r($o);

//Ausgabeergebnis-Array ( [a] => Apfel [b] => Banane [c] => Kokosnuss)

?>

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)>//Inverse Serialisierung

$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. json_encode und json_decode



JSON-Format zum Serialisieren und Deserialisieren verwenden Ist eine gute Wahl:



Mit den Formaten json_encode und json_decode ist die Ausgabe viel schneller als mit dem Serialisierungs- und Deserialisierungsformat.

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; eval führt den String als PHP-Code aus und umgekehrt . Durch die Serialisierung wird der Inhalt der Originalvariablen abgerufen.



$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');



//Serialisiertes Array



$s = var_export($a, true);



echo $s;



//Ausgabeergebnis: array ( 'a' => 'Apple', 'b' => 'banana', 'c' => ' Coconut ', )



echo '

'



//Deserialisierung



eval('$my_var=' . $s . ';');



print_r($my_var);

4. wddx_serialize_value und wddx deserialize



Die Funktion wddx_serialize_value kann 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):

< ;string>Applebanana< string> ;Coconut



echo '

';



//Deserialisierung

$o = wddx_deserialize($s);print_r($o);

//Ausgabeergebnis: Array ( [a] => Apfel [b] => Banane 1 => Kokosnuss)

Wie Sie sehen können, XML Es gibt viele Beschriftungszeichen, daher nimmt die Serialisierung dieses Formats immer noch viel Platz ein.



Zusammenfassung



Alle oben genannten Funktionen können beim Serialisieren von Array-Variablen normal ausgeführt werden, bei der Verwendung von Objekten ist dies jedoch anders. Beispielsweise schlagen serialisierte json_encode-Objekte fehl. Beim Deserialisieren eines Objekts 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