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);  
 }

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