最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php中序列化与反序列化在utf8和gbk编码中测试
时间:2022-06-24 17:24:00 编辑:袖梨 来源:一聚教程网
php 在utf8和gbk编码下使用serialize和unserialize互相序列化和反序列化会出现无法成功反序列化的问题。
问题出现的原因主要是在不同编码下strlen函数计算中文字符串长度不同的原因。
代码如下 | 复制代码 |
$array=array('title'=>'php教程分享网','url'=>'http://www.111com.net'); echo serialize($array); //gbk编码 a:2:{s:5:"title";s:13:"php教程分享网";s:3:"url";s:20:"http://www.111com.net";} //utf8编码 a:2:{s:5:"title";s:18:"php教程分享网";s:3:"url";s:20:"http://www.111com.net";} ?> |
要解决这个问题就要在反序列化的时候重新修正字符串的长度。
解决方案
代码如下 | 复制代码 |
$str='a:2:{s:5:"title";s:13:"php教程分享网";s:3:"url";s:20:"http://www.111com.net";}'; $str = preg_replace_callback( $regex , "fixser", $str); function fixser($matches) { return 's:'.strlen($matches[2]).':'.'"'.$matches[2].'"'; } ?> |
可以改成匿名函数
代码如下 | 复制代码 |
$str='a:2:{s:5:"title";s:13:"php教程分享网";s:3:"url";s:20:"http://www.111com.net";}'; $str = preg_replace_callback( ?> |
相关文章
- 银与绯吉尔兰技能怎么样 吉尔兰战斗特性解析 07-14
- 异环异象管理局局长是谁 艾尔菲德角色详细介绍 07-14
- 欧意易ok官网下载版 欧意易app下载 07-14
- 迷你世界马车怎么做 马车制作方法介绍 07-14
- 碳碳岛许愿池有什么作用 许愿池建造方法介绍 07-14
- 最终幻想14水晶世界怎么招募雇员 招募雇员方法介绍 07-14