PHP中Notice: unserialize(): Error at offset of bytes in on line 的解決方法


使用unserialize函數將數據儲存到數據庫的時候遇到了這個報錯,后來發現是將gb2312轉換成utf-8格式之后,每個中文的字節數從2個增加到3個之后導致了反序列化的時候判斷字符長度出現了問題,所以需要使用正則表達式將序列化的數組中的表示字符長度的值重新計算一遍,代碼如下:

function mb_unserialize($serial_str) {
    $out = preg_replace_callback( '!s:(\d+):"(.*?)";!s', function($r){ return 's:'.strlen($r[2]).':"'.$r[2].'";'; }, $serial_str );
    return unserialize($out);
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM