首页 > 编程语言 >PHP serialize() unserialize()

PHP serialize() unserialize()

时间:2022-08-25 14:03:06浏览次数:54  
标签:base64 函数 serialize unserialize PHP 序列化

PHP serialize()函数

PHP 可用的函数PHP 可用的函数 serialize() 函数用于序列化对象或数组,并返回一个字符串。

serialize() 函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变。

如果想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。

string serialize ( mixed $value )

参数说明:

  • $value: 要序列化的对象或数组。

返回值

返回一个字符串。

 

PHP unserialize()函数

unserialize() 函数用于将通过 serialize() 函数序列化后的对象或数组进行反序列化,并返回原始的对象结构。

当使用 serialize() 函数将对象序列化后,可以将这个得到的字符串保存到文件或者数据库中,

然后在需要的地方使用 unserialize() 函数将这个字符串反序列化,unserialize() 函数的语法格式如下:

mixed unserialize ( string $str )

参数说明:

  • $str: 序列化后的字符串。

返回值

返回的是转换之后的值,可为 integer、float、string、array 或 object。

如果传递的字符串不可解序列化,则返回 FALSE,并产生一个 E_NOTICE。

 

 

PHP serialize()和unserialize()注意事项

当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能会出现问题。为了克服这个问题,一个巧妙的技巧是使用base64_encode和base64_decode。

// to safely serialize
$save_in_db = base64_encode(serialize($value));

// to unserialize value fetched from db...
$value = unserialize(base64_decode($fetched_from_db));

但是base64编码将增加字符串的长度。为了克服这个问题,可以和gzcompress一起使用。

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

 

 

 



标签:base64,函数,serialize,unserialize,PHP,序列化
From: https://www.cnblogs.com/yx520zhao/p/16624076.html

相关文章

  • php代码实现redis连接池
    通常情况下,当我们需要做redis操作时,会创建一个连接,并基于这个连接进行redis操作,操作完成后,释放连接,一般情况下,这是没问题的,但当并发量比较高的时候,频繁的......
  • PHP代码连接Redis,含Redis密码验证、指定某一Redis数据库
    <?php$redis=newRedis();$redis->connect('127.0.0.1',6379);//连接Redis$redis->auth('mypasswords123sdfeak');//密码验证$redis->select(2);//选择......
  • windows环境 php 连接 sql server
    下载扩展:MicrosoftDriversforPHPforSQLServer https://www.microsoft.com/en-us/download/details.aspx?id=20098ODBCDriver:Microsoft®ODBCDriver11forS......
  • 钉钉群机器人群发[ PHP ]
    //secret机器人设置-加签秘钥//access_token机器人设置-Webhook带此参数//message机器人设置-关键词设置的内容需要和message一致publicfunctionuse......
  • php本地上传文件类
    /***ClassUploadFile*@authorfengzi*/classUploadFile{public$error=array();//上传前的error信息public$info=array();//上传过......
  • mysql php js 经纬度 转换 查询
    坐标系介绍地球坐标(WGS84)WGS-84:是国际标准,GPS坐标(GoogleEarth使用、或者GPS模块)国际标准,从专业GPS设备中取出的数据的坐标系国际地图提供商使用的坐标系火星坐......
  • PHP检测一个字符串中是否包含另外一个字符或字符串
    编写程序的时候,经常要处理字符串,最基本就是字符串的查找,您可能需要检查字符串是否包含特定的字符或子字符串,因为您可能必须对该子字符串或字符执行某些操作。我们将使用......
  • PHP删除数组元素的三种常用方法
    在PHP网络编程中,你可能需要删除数组中的一些元素,在本文章中,我们将演示并描述php如何删除数组元素。文章一共列举了三种方法来实现这一功能:phpunset()函数phparray_sp......
  • PHP array_chunk()函数
    array_chunk()函数是PHP中的内置函数,用于根据传递给函数的参数将数组拆分为给定大小的部分或块。最后一个块可能包含的元素少于块的所需大小。语法:arrayarray_chunk($ar......
  • PHP多维数组按照某个字段进行排序
    作为开发人员,您可能会遇到这种情况,即数据库中有一个按特定顺序获取的数据列表,但您希望在前端显示这些项目时安装期中某一个字段进行排序。比如数组:$mylist=array(arra......