最新下载
热门教程
- 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-01
- 问题汇总:币圈技术分析使用的5个基本指标 07-01
- Tether疯狂出手:合规大势下,野蛮生长的“稳定币之王”焦虑了? 07-01
- 和平精英夏日海豚岛有什么玩法 海豚岛特色内容介绍 07-01
- 无畏契约莲花古城怎么打 源能行动地图攻防技巧 07-01
- ps脖颈纹怎么去除? ps2021改善淡化脖子颈纹的技巧 07-01