Maison > Article > développement back-end > Compréhension approfondie de la sérialisation et de la désérialisation en PHP
Compresser les types de données complexes dans une chaîne
serialize() Encoder les variables et leurs valeurs sous forme de texte
unserialize() Restaurer les variables d'origine
<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>
Résultat : a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}
Array ([0] => Moe [1] => Larry [2] => Curly )
Lorsque vous placez ces données sérialisées dans l'URL, elles changeront entre les pages, dont vous avez besoin. pour appeler urlencode() sur ces données pour garantir que les métacaractères de l'URL qu'elles contiennent sont traités :
<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>
Les paramètres des éléments de configuration margic_quotes_gpc et magic_quotes_runtime affecteront les données transmises à unserialize().
Si l'option magic_quotes_gpc est activée, les données transmises dans les URL, les variables POST et les cookies doivent être traitées avec stripslashes() avant la désérialisation :
<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>
Si magic_quotes_runtime est activé, les données sérialisées doivent être traité avec addlashes() avant d'écrire dans le fichier, et stripslashes() avant de les lire :
//当对一个对象进行反序列化操作时,PHP会自动地调用其wakeUp()方法。这样就使得对象能够重新建立起序列化时未能保留的各种状态。例如:数据库连接等。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!