Heim > Artikel > Backend-Entwicklung > Vertiefte Kenntnisse der Serialisierung und Deserialisierung in PHP
Komplexe Datentypen in eine Zeichenfolge komprimieren
serialize() Variablen und ihre Werte in Textform kodieren
unserialize() Originalvariablen wiederherstellen
<span style="color: #800080">$stooges = <span style="color: #0000ff"><a href="http://www.php.cn/wiki/1041.html" target="_blank">array</a>('Moe','Larry','Curly');<br/><span style="color: #800080">$<a href="http://www.php.cn/wiki/165.html" target="_blank">new</a> = <span style="color: #008080">serialize(<span style="color: #800080">$stooges);<br/><span style="color: #008080"><a href="http://www.php.cn/wiki/1362.html" target="_blank">print</a>_r(<span style="color: #800080">$new);<span style="color: #0000ff"><a href="http://www.php.cn/wiki/1343.html" target="_blank">echo</a> "<br />";<br/><span style="color: #008080">print_r(<span style="color: #008080">unserialize(<span style="color: #800080">$new));</span></span></span></span></span></span></span></span></span></span></span>
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 Sie diese serialisierten Daten in die URL einfügen, ändern sie sich zwischen den Seiten um urlencode() für diese Daten aufzurufen, um sicherzustellen, dass die darin enthaltenen URL-Metazeichen verarbeitet werden:
<span style="color: #800080">$shopping = <span style="color: #0000ff">array('Poppy seed bagel' => 2,'Plain Bagel' =>1,'Lox' =>4);<br/><span style="color: #0000ff">echo '<a href="next.php?cart='.<span style="color: #008080">urlencode(<span style="color: #008080">serialize(<span style="color: #800080">$shopping)).'">next</a>';</span></span></span></span></span></span>
Die Einstellungen der Konfigurationselemente margic_quotes_gpc und magic_quotes_runtime wirken sich auf die an unserialize() übergebenen Daten aus.
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:
<span style="color: #800080">$new_cart = <span style="color: #008080">unserialize(<span style="color: #008080">stripslashes(<span style="color: #800080">$cart)); <span style="color: #008000">//<span style="color: #008000">如果magic_quotes_gpc开启<span style="color: #008000"><br/><span style="color: #800080">$new_cart = <span style="color: #008080">unserialize(<span style="color: #800080">$cart);</span></span></span></span></span></span></span></span></span></span>
Wenn magic_quotes_runtime aktiviert ist, müssen serialisierte Daten serialisiert werden mit addslashes() verarbeitet werden, bevor in die Datei geschrieben wird, und mit stripeslashes() vor dem Lesen:
//当对一个对象进行反序列化操作时,PHP会自动地调用其wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。
Das obige ist der detaillierte Inhalt vonVertiefte Kenntnisse der Serialisierung und Deserialisierung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!