最新下载
热门教程
- 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'=>'https://www.111cn.net'); echo serialize($array); //gbk编码 a:2:{s:5:"title";s:13:"php教程分享网";s:3:"url";s:20:"https://www.111cn.net";} //utf8编码 a:2:{s:5:"title";s:18:"php教程分享网";s:3:"url";s:20:"https://www.111cn.net";} ?> |
|
要解决这个问题就要在反序列化的时候重新修正字符串的长度。
解决方案
| 代码如下 | 复制代码 |
|
$str='a:2:{s:5:"title";s:13:"php教程分享网";s:3:"url";s:20:"https://www.111cn.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:"https://www.111cn.net";}'; $str = preg_replace_callback( ?> |
|
相关文章
- 互传app怎么查看发送记录 08-17
- 快对ai怎么查看历史记录-快对作业历史记录怎么删除 08-17
- 希望大家能推荐一款软件,可以直接把DeepSeek生成的代码变流程图,提高办公效率 08-17
- 688191,拟定增不超9.04亿元加码AI 08-17
- 上汽大众app车子为何联网激活 08-17
- 【新动能激荡新活力】拥抱“人工智能+” 江苏国企解锁发展新路径 08-17