Analysis of multiple serialization examples in PHP

小云云
Release: 2023-03-20 09:22:01
Original
1033 people have browsed it

Serialization is the process of converting variables into strings that can be saved or transmitted; deserialization is to convert this string into the original variable for use at the appropriate time. The combination of these two processes can easily store and transmit data, making the program more maintainable. This article mainly introduces you to the detailed explanation of various serialization/deserialization methods in PHP. The editor thinks it is quite good. Now Share it with everyone and give it as a reference. Let’s follow the editor to take a look, I hope it can help everyone.

1. serialize and unserialize functions

These two are common functions for serializing and deserializing data in PHP.


 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); //序列化数组 $s = serialize($a); echo $s; //输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";} echo '

'; //反序列化 $o = unserialize($s); print_r($o); //输出结果 Array ( [a] => Apple [b] => banana => Coconut ) ?>
Copy after login


//反序列化 $o = unserialize($s); print_r($o); //输出结果 Array ( [a] => Apple [b] => banana => Coconut ) ?>
Copy after login

When array values contain characters such as double quotes, single quotes, or colons, they may be deserialized. Problems will arise. To overcome this problem, a neat trick is to use base64_encode and base64_decode.


$obj = array(); //序列化 $s = base64_encode(serialize($obj)); //反序列化 $original = unserialize(base64_decode($s));
Copy after login

But base64 encoding will increase the length of the string. To overcome this problem, it can be used with gzcompress.


//定义一个用来序列化对象的函数 function my_serialize( $obj ) { return base64_encode(gzcompress(serialize($obj))); } //反序列化 function my_unserialize($txt) { return unserialize(gzuncompress(base64_decode($txt))); }
Copy after login

2. json_encode and json_decode

Using JSON format serialization and deserialization is a good choice:

Using json_encode and json_decode format output is much faster than serialize and unserialize format.

JSON format is readable.

The JSON format is smaller than the data returned by serialize.

The JSON format is open and portable. Other languages can use it as well.


$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); //序列化数组 $s = json_encode($a); echo $s; //输出结果:{"a":"Apple","b":"banana","c":"Coconut"} echo '

'; //反序列化 $o = json_decode($s);
Copy after login

In the above example, the json_encode output length is obviously shorter than the serialize output length in the previous example.

3. var_export and eval

var_export function outputs the variable as a string; eval executes the string as a PHP code, and deserializes it to obtain the original variable content.


$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); //序列化数组 $s = var_export($a , true); echo $s; //输出结果: array ( 'a' => 'Apple', 'b' => 'banana', 'c' => 'Coconut', ) echo '

'; //反序列化 eval('$my_var=' . $s . ';'); print_r($my_var);
Copy after login

4. The wddx_serialize_value and wddx deserialize

wddx_serialize_value functions can serialize array variables and output them as XML strings.


$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); //序列化数组 $s = wddx_serialize_value($a); echo $s; //输出结果(查看输出字符串的源码):
ApplebananaCoconut echo '

'; //反序列化 $o = wddx_deserialize($s); print_r($o); //输出结果:Array ( [a] => Apple [b] => banana 1 => Coconut )
Copy after login

It can be seen that there are many XML tag characters, so the serialization of this format still takes up a lot of space.

Summary

All the above functions can be executed normally when serializing array variables, but it is different when applied to objects. For example, json_encode serialized objects will fail. When deserializing an object, unserialize and eval will have different effects.

Related recommendations:

JS method to implement form serialization to determine null value

About php data sequence Testing

jQuery form serialization example code example sharing

The above is the detailed content of Analysis of multiple serialization examples in PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!