最新下载
热门教程
- 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( ?> |
相关文章
- 死亡搁浅2艺术家在哪 艺术家配送订单及位置介绍 09-03
- 鬼灭之刃火之神血风谭2PC版怎么玩 电脑端安装运行教程 09-03
- 死亡搁浅2开罗尔晶体怎么速刷 开罗尔晶体快速获取方法 09-03
- 空洞骑士丝之鸽9.4几点能玩 最新国内发售信息介绍 09-03
- 金铲铲之战s9英雄之力哪个强-s9英雄之力强度排行一览 09-03
- 死亡搁浅2星野源好感度奖励有什么 星野源五星好感度奖励介绍 09-03