2010-05-20 20 views
2

我正在爲我的應用程序構建Redis DB的緩存層,並且我已經到了要處理數組的地步。檢查字符串是否被序列化爲PHP

我不知道是否有任何好的(高性能!)方式控制字符串序列化或不與PHP?

非常感謝!

+0

你是什麼意思?一個字符串實習生池? PHP沒有(尚未) – Artefacto 2010-05-20 22:18:17

+0

我無法真正告訴你要從你的問題的措辭中找到什麼。標題聽起來像是你想要一種方法來檢查給定的字符串是否是序列化的表示形式? – 2010-05-20 22:18:38

回答

12
$array = @unserialize($string); 
if ($array === false && $string !== 'b:0;') { 
    // woops, that didn't appear to be anything serialized 
} 

$string !== 'b:0;'檢查是否序列化的字符串可能是價值false。如果此檢查對您很重要,您可能需要trim序列化的字符串或以其他方式對其進行預處理以確保其正常工作。

+0

你不必冒險,你可以檢查error_get_last – Artefacto 2010-05-20 22:26:15

+2

@Artefacto這可能有用也可能沒用,因爲很難判斷最後一個錯誤是真的在這裏還是之前被拋出。更好的方法可能是查看序列化的字符串以查看它是否看起來像是單個序列化的「false」。無論如何,誰在序列化'false'值? ;) – deceze 2010-05-20 22:31:38

+0

Hi Deceze!聽起來不錯,我一定會嘗試一下!週末愉快! – Industrial 2010-05-21 07:53:34