先來(lái)實(shí)例解釋一下PHP中的序列化數(shù)組
[代碼]php代碼:
1
<?php
2
$arr = array('張三','李四'); //定義數(shù)組
3
$str = serialize($arr); //這里是序列化$arr
4
echo $str."<br/><br/>";
5
$new_arr = unserialize($str); //這里是反序列化$str
6
print_r($new_arr);
7
?>
序列化對(duì)應(yīng)的函數(shù)為 serialize(), 反序列化對(duì)應(yīng)的函數(shù)為:unserialize() 。
可以將前者序列化之后的數(shù)據(jù)存到數(shù)據(jù)庫(kù)的某個(gè)字段中,使用時(shí)再通過(guò)反序列化處理。
那么,在discuz中,我們通過(guò)一個(gè)實(shí)例來(lái)了解如何反序列化處理
以分類(lèi)信息中上傳圖片字段為例。這個(gè)字段是采用先把內(nèi)容包裝到一個(gè)數(shù)組(內(nèi)容包含圖片的存儲(chǔ)路徑和這個(gè)圖片的id),然后序列化保存在value字段中。如果我們只需要其中的圖片路徑。那么就需要對(duì)存入到value字段中的序列化數(shù)組進(jìn)行反序列化。當(dāng)然,這里需要注意的一個(gè)問(wèn)題,如圖:
在這里我們需要注意一個(gè)符號(hào)。反斜杠“\”。(猜測(cè)是因?yàn)榫庉媰?nèi)容后生成的)。所以,在這里我們就需要多一道工序。
首先是查詢數(shù)據(jù)庫(kù),這里忽略.....(所用的表是:pre_forum_typeoptionvar)
查詢完,首先需要去掉反斜杠才能對(duì)數(shù)組反序列化處理。直接反序列化數(shù)組值是空。
第一步去掉反斜杠
[代碼]php代碼:
1
<!--{eval $value_1 = stripcslashes($value)}-->
第二步反序列化數(shù)組