1. serialize和unserialize函数
这两个是序列化和反序列化PHP中数据的常用函数。
- $a = array('a' => '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 '<br /><br />';
- //反序列化
- $o = unserialize($s);
- print_r($o);
当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能会出现问题。为了克服这个问题,一个巧妙的技巧是使用base64_encode和base64_decode。
- $obj = array();
- //序列化
- $s = base64_encode(serialize($obj));
- //反序列化
- $original = unserialize(base64_decode($s));
但是base64编码将增加字符串的长度。为了克服这个问题,可以和gzcompress一起使用。
- //定义一个用来序列化对象的函数
- function my_serialize( $obj )
- {
- return base64_encode(gzcompress(serialize($obj)));
- }
- //反序列化
- function my_unserialize($txt)
- {
- return unserialize(gzuncompress(base64_decode($txt)));
- }