php unserialize返回false的解决办法

php unserialize失败返回false原因多半是序列化数据时的编码与反序列化时的编码不一致,导致单引号等特殊字符计算长度不正确,所以解决办法是重新计算长度。百度了很多办法,全是坑呀,百度的那些办法根本没用,都是错的。所以自己写了个,绝对有效!

反序列化时用下面函数处理下就行

function common_unserialize($serial_str) { 
        $serial_str = preg_replace_callback('/s:(\d+):"([\s\S]*?)";/', function($matches) {
            return 's:'.strlen($matches[2]).':"'.$matches[2].'";';
        }, $serial_str);
        return unserialize($serial_str);  
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章