douwen7516 2018-01-14 13:18
浏览 120
已采纳

PHP:错误:注意:unserialize():偏移量为438,错误为750字节

I tried to unserialize an serialized string:

$sri = 'a:8:{s:3:"key";s:32:"73b43c7df3604c8d725f856b219cffda";s:5:"email";s:19:"Aligh.Pro@gmail.com";s:4:"date";s:0:"";s:9:"user_info";a:4:{s:2:"id";i:2;s:5:"email";s:19:"Aligh.Pro@gmail.com";s:10:"first_name";s:5:"mahdi";s:8:"discount";s:4:"none";}s:9:"downloads";a:1:{i:0;a:3:{s:2:"id";i:44;s:8:"quantity";i:1;s:7:"options";a:2:{s:8:"quantity";i:1;s:8:"price_id";s:1:"1";}}}s:12:"cart_details";a:1:{i:0;a:10:{s:4:"name";s:17:"?????? ??";s:2:"id";i:44;s:11:"item_number";a:3:{s:2:"id";i:44;s:8:"quantity";i:1;s:7:"options";a:2:{s:8:"quantity";i:1;s:8:"price_id";s:1:"1";}}s:10:"item_price";d:20000;s:8:"quantity";i:1;s:8:"discount";d:0;s:8:"subtotal";d:20000;s:3:"tax";d:0;s:4:"fees";a:0:{}s:5:"price";d:20000;}}s:4:"fees";a:0:{}s:8:"currency";s:4:"RIAL";}';
$data_array = unserialize((string) $sri);
echo '<pre>';
print_r($data_array);
echo '</pre>';

but I saw this error: Notice: unserialize(): Error at offset 438 of 750 bytes in ...

I tried above serialized string by online unserialization. The string worked well. but in my cumputer, it doesn't.

what's the problem?

  • 写回答

2条回答 默认 最新

  • doufendi9063 2018-01-14 13:43
    关注

    Baba already wrote a great answer in this post. If you are in need of a quick fix, this code will do the job.

    $data = preg_replace_callback(
        '!s:(\d+):"(.*?)";!', 
        function($m) { 
            return 's:'.strlen($m[2]).':"'.$m[2].'";'; 
        }, 
        $sri);
    
    var_dump(unserialize($data));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!