It is often seen that some configuration files store some similar variable names and values with formats , in fact, it is a serialization process. When these databases need to be used, a deserialization process will be carried out, which is to restore the string to its original data structure. . Let’s talk about how php serializes and deserializes data .
PHP actually uses two functions to serialize and deserialize data, serialize and unserialize.
serialize Format the array into an ordered string
unserialize Unserialize an array into an array
For example:
$user=array('Moe','Larry','Curly'); $user=serialize($stooges); echo '<pre class="brush:php;toolbar:false">'; print_r($user); echo '<br />'; print_r(unserialize($user));
Result:
a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";} Array ( [0] => Moe [1] => Larry [2] => Curly )
Note that when the array value contains characters such as double quotes, single quotes, colons or Chinese characters, garbled characters or formatting may occur after they are deserialized.
To solve the garbled code problem, you can use the two functions base64_encode and base64_decode .
For example:
$user=array('Moe','Larry','Curly'); $user=base64_encode(serialize($user)); $user=unserialize(base64_decode($user));
This way there will be no garbled code problems, but base64 encoding increases the length of the stored string.
From the above we can summarize an own serialization and deserialization function , as follows:
function my_serialize($obj_array){ return base64_encode(gzcompress(serialize($obj_array))); } //反序列化 function my_unserialize($str){ return unserialize(gzuncompress(base64_decode($str))); }
The above is to tell you how PHP serializes and deserializes data, and after encountering deserialization, the reasons and solutions for garbled characters or formatting are disrupted. I hope this article can introduce It will be helpful to everyone’s study.