Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der PHP-Serialisierung und -Deserialisierung
In diesem Artikel werden die relevanten Kenntnisse zur Serialisierung und Deserialisierung in PHP vorgestellt. Es hat einen sehr guten Referenzwert, schauen wir uns den Editor unten an
Komprimieren Sie komplexe Datentypen in einen String
serialize() kombiniert Variablen und ihre Werte werden codiert in Textform
unserialize(), um die ursprüngliche Variable wiederherzustellen
z. B.:
$stooges = array('Moe','Larry','Curly'); $new = serialize($stooges); print_r($new);echo "<br />"; print_r(unserialize($new));
Ergebnis: a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}
Array ( [0] => Moe [1] => Larry [2] => Curly )
Wenn diese serialisierten Daten in der URL platziert werden, werden sie zwischen dem URL-Code der Seiten übergeben () muss für diese Daten aufgerufen werden, um sicherzustellen, dass die darin enthaltenen URL-Metazeichen verarbeitet werden:
$shopping = array('Poppy seed bagel' => 2,'Plain Bagel' =>1,'Lox' =>4); echo '<a href="next.php?cart='.urlencode(serialize($shopping)).'" rel="external nofollow" >next</a>';
Die Einstellungen der Konfigurationselemente margic_quotes_gpc und magic_quotes_runtime wirken sich aus Die an unserialize() übergebenen Daten.
Wenn die Option magic_quotes_gpc aktiviert ist, müssen in URLs, POST-Variablen und Cookies übergebene Daten vor der Deserialisierung mit stripeslashes() verarbeitet werden:
$new_cart = unserialize(stripslashes($cart)); //如果magic_quotes_gpc开启 $new_cart = unserialize($cart);
Wenn magic_quotes_runtime aktiviert ist, müssen serialisierte Daten vor dem Schreiben in die Datei mit addslashes() und vor dem Lesen mit stripeslashes() verarbeitet werden:
$fp = fopen('/tmp/cart','w'); fputs($fp,addslashes(serialize($a))); fclose($fp); //如果magic_quotes_runtime开启 $new_cat = unserialize(stripslashes(file_get_contents('/tmp/cart'))); //如果magic_quotes_runtime关闭 $new_cat = unserialize(file_get_contents('/tmp/cart'));
Wann Wenn magic_quotes_runtime aktiviert ist, müssen aus der Datenbank gelesene serialisierte Daten ebenfalls von stripeslashes() verarbeitet und zur Serialisierung in der Datenbank gespeichert werden. Daten müssen von addslashes() verarbeitet werden, damit sie ordnungsgemäß gespeichert werden können.
mysql_query("insert into cart(id,data) values(1,'".addslashes(serialize($cart))."')"); $rs = mysql_query('select data from cart where id=1'); $ob = mysql_fetch_object($rs); //如果magic_quotes_runtime开启 $new_cart = unserialize(stripslashes($ob->data)); //如果magic_quotes_runtime关闭 $new_cart = unserialize($ob->data);
Beim Deserialisieren eines Objekts ruft PHP automatisch seine __wakeUp()-Methode auf. Dadurch kann das Objekt verschiedene Zustände wiederherstellen, die während der Serialisierung nicht beibehalten wurden. Zum Beispiel: Datenbankverbindung usw.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
PHP Serialisierung und De-Serialisierung Ausführliche Erklärung der Funktionen mit Bilder und Text
PHP implementiert verschiedene Serialisierungs-/Anti-Serialisierungs--Methoden
FormularformularSerialisierungAusführliche Erklärung (Bild- und Textanleitung)
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der PHP-Serialisierung und -Deserialisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!