php emoj表情unserialize报错如何修复

下面是代码:

$str_tt = 'a:4:{s:2:"id";i:11;s:4:"name";s:6:"❤️👍";s:3:"gid";i:3;s:3:"num";d:1;}';
$str_arr = unserialize($str_tt);
dump($str_tt);
dump($str_arr);

报错信息:
unserialize(): Error at offset 41 of 76 bytes

阅读 1.7k
1 个回答

一样的问题。

把解决方案搬过来吧。

function mb_unserialize($string) {
    $string2 = preg_replace_callback(
        '!s:(\d+):"(.*?)";!s',
        function($m){
            $len = strlen($m[2]);
            $result = "s:$len:\"{$m[2]}\";";
            return $result;

        },
        $string);
    return unserialize($string2);
}

从讨论中看到,有很多弊端,这个方法,建议是使用 JSON 啦、

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题