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

PHP-Tutorial-Deserialisierungsmethode

Nov 22, 2016 pm 02:39 PM

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



Diese beiden sind Serialisierungs- und Deserialisierungsfunktionen Daten in PHP.

<?php

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

//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 '<br /><br />';

//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 '<br /><br />'

//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 '<br /><br />'



//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): <wddxPacket version='1.0'><header/><data><struct><var name='a'>&lt ;string&gt ;Apple</string></var><var name='b'><string>banana</string></var><var name='c'><string> ;Coconut< ;/string></var></struct></data></wddxPacket>



echo '<br /><br / > ';



//Deserialisierung

$o = wddx_deserialize($s);

print_r($o); 🎜>//Ausgabeergebnis: Array ( [a] => Apple [b] => Banana 1 => Coconut )

Es ist ersichtlich, dass es viele XML-Tag-Zeichen gibt, was dazu führt Die Formatserialisierung nimmt immer noch viel Platz ein.



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.

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) 11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) Mar 03, 2025 am 10:49 AM

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Arbeiten mit Flash -Sitzungsdaten in Laravel

Einführung in die Instagram -API Einführung in die Instagram -API Mar 02, 2025 am 09:32 AM

Einführung in die Instagram -API

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Mar 04, 2025 am 09:33 AM

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

12 Beste PHP -Chat -Skripte auf Codecanyon

Benachrichtigungen in Laravel Benachrichtigungen in Laravel Mar 04, 2025 am 09:22 AM

Benachrichtigungen in Laravel

See all articles