日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php+反序列化方法,PHP序列化反序列化的方法详解

發布時間:2024/9/27 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php+反序列化方法,PHP序列化反序列化的方法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在一些開源的php源代碼中,我們經常看到一些配置文件里面存放的是一些類似帶有格式的變量名稱和值。剛開始還不明白這個是怎么回事兒。后來才知道這個是為了將一個復雜(也可能并不那么復雜)的數據結構轉換成一個字符串,以便于保存和傳遞。其實就是一個序列化的過程,在需要用到這些數據庫的時候會進行一個反序列化過程,就是將這個字符串再還原成他原來的數據結構。下面說說 php 如何進行數據的序列化和反序列化的。

php 將數據序列化和反序列化其實就用到兩個函數,serialize 和 unserialize。

serialize?將數組格式化成有序的字符串

unserialize?將數組還原成數組

例如:

$user=array('Moe','Larry','Curly');

$user=serialize($stooges);

echo '

';

print_r($user);

echo '
';

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 編碼卻增加了存儲字符串的長度。對于這個問題,可以使用 gzcompress 來解決。

由以上我們可以總結出一個自己的序列化和反序列化的函數來,如下:

function my_serialize($obj_array){

return base64_encode(gzcompress(serialize($obj_array)));

}

//反序列化

function my_unserialize($str){

return unserialize(gzuncompress(base64_decode($str)));

}

總結

以上是生活随笔為你收集整理的php+反序列化方法,PHP序列化反序列化的方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。