這篇文章主要介紹php 如何進行資料的序列化和反序列化,有興趣的朋友參考下,希望對大家有幫助。
php 將資料序列化和反序列化其實用到兩個函數,serialize 和unserialize。
serialize 將陣列格式化成有序的字串
#unserialize 將陣列還原成陣列
#例如:
$user=array('Moe','Larry','Curly'); $user=serialize($stooges); echo '<pre class="brush:php;toolbar:false">'; print_r($user); echo '<br />'; print_r(unserialize($user));
結果:
a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";} Array ( [0] => Moe [1] => Larry [2] => Curly )
注意當陣列值包含如雙引號、單引號、冒號或中文等字元時,它們被反序列化後,可能會出現亂碼或格式被打亂的問題。
解決亂碼問題可以用base64_encode和base64_decode 兩個函數。
例如:
$user=array('Moe','Larry','Curly'); $user=base64_encode(serialize($user)); $user=unserialize(base64_decode($user));
這樣就不會出現亂碼類別的問題了,但是base64 編碼卻增加了儲存字串的長度。
由以上我們可以總結出一個自己的序列化和反序列化的函數來,如下:
function my_serialize($obj_array){ return base64_encode(gzcompress(serialize($obj_array))); } //反序列化 function my_unserialize($str){ return unserialize(gzuncompress(base64_decode($str))); }
總結:以上就是本篇的全部內容,希望對大家的學習有所幫助。
相關推薦:
PHP模板引擎Smarty之設定檔在模板變數中的用法及實例詳解
以上是php 如何進行資料的序列化與反序列化的詳細內容。更多資訊請關注PHP中文網其他相關文章!