序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。
1. serialize和unserialize函数
这两个是序列化和反序列化PHP中数据的常用函数。

<?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);
//输出结果 Array ( [a] => Apple [b] => banana [c] => Coconut )
?>

当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能会出现问题。为了克服这个问题,一个巧妙的技巧是使用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)));
}

转载于:https://www.cnblogs.com/dragonli/p/5527414.html

serialize和unserialize函数相关推荐

  1. PHP多种序列化/反序列化的方法(serialize和unserialize函数)

    serialize和unserialize函数这两个是序列化和反序列化PHP中数据的常用函数.<?php$a = array('a' => 'Apple' ,'b' => 'bana ...

  2. php json_decode 效率,浅析PHP中json_encode、json_decode与serialize、unserialize的性能测试...

    今天偶然在想,如果用PHP写一个类似BDB的基于文件的Key-Value小型数据库用于存储非结构化的记录型数据,不知道效率会如何? 于是便联想到PHP中的对象怎么样序列化存储性价比最高呢?接着想到了之 ...

  3. php函数serialize()与unserialize()

    php函数serialize()与unserialize()说明及案例.想要将已序列化的字符串变回 PHP 的值,可使用unserialize().serialize()可处理除了resource之外 ...

  4. 非常好用的两个PHP函数 serialize()和unserialize()

    使用serialize()函数和unserialize()函数,这两个函数的用法真是绝配,一个是进行序列化存储,另一个则是进行序列化恢复,方便极了 今天,在做一个关于PING服务的东西,由于不想把pi ...

  5. php序列化(serialize)和反序列化(unserialize)函数

    用法:serialize().unserialize() 适用情境:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方.这有利于存储或传递 PHP 的值,同时不 ...

  6. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...

    Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...

  7. serialize()与unserialize()

    serialize()与unserialize() 简单说serialize($param)就是把$param的值序列化,貌似以前看过UCHOME数据库里某些字段就是存储的这样的数据(a:1:{s:7 ...

  8. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法

    本文实例讲述了PHP查询附近的人及其距离的实现方法.分享给大家供大家参考,具体如下: ?php//获取该点周围的4个点$distance = 1;//范围(单位千米)$lat = 113.873643 ...

  9. 树莓派i2c python_树莓派2 python i2cPython中chr、unichr、ord字符函数之间的对比

    chr.unichr.ord在Python中都可以被用作字符类型转换,这里我们就来浅谈Python中chr.unichr.ord字符函数之间的对比,需要的朋友可以参考下ord是unicode ordi ...

最新文章

  1. Perforce使用之创建DEPOT流程
  2. [洛谷P4726]【模板】多项式指数函数
  3. linux查看硬盘smart_SMART Utility for mac (硬盘检测)
  4. Java操作memcache
  5. robot连PCwifi、PC开Shell连robot
  6. 关于JEECG 开源声明
  7. vue05-REST 请求
  8. 找规律 SGU 107 987654321 problem
  9. obs之libx264编码
  10. 深度学习入门代码详解(附代码)
  11. 学校实训 电力巡检系统管理平台
  12. 威联通+nas+mysql_让不同品牌的 NAS 没有距离,群晖和威联通之间如何同步
  13. php+检测是否是手机浏览器,php检测是否是移动设备的浏览器
  14. Vmware安装详细教程
  15. 思科模拟器vlan的划分
  16. 使用 webservice 实现 RPC 调用
  17. 移动互联网寒冬到来,程序员该怎么办?
  18. 《机器学习》学习笔记
  19. Android ViewPager 自定义翻页动画
  20. 最全的硬盘问题及修复方法

热门文章

  1. 现在论文用手写还是用计算机写,毕业论文计算机手写数字识别技术完整版.docx...
  2. php构造方法什么时候使用,php:构造方法的说明详解
  3. java中什么是匿名接口_Java中接口(interface)和匿名类
  4. ASPNetCore MVC ModelValidation-ajax
  5. HDU-1501-Zipper
  6. 李开复谈创业失败十原因:经不住诱惑 直接山寨
  7. 看Facebook如何基于物理安全保护数据
  8. 采用Visual Stuidio 2010 创建网站栏
  9. 怎么在InfoPath Web浏览器表单中弹出对话框?
  10. Linux运维 第三阶段 (一) 网络配置及openssl加密