本帖最后由 pengjixin123 于 2014-07-14 14:42:38 编辑

解决方案 »

  1.   

    $row = unserialize($row['data']);
      

  2.   


    比如把data数据里面的time后面的1405306402单独提出来应该怎么提取?
      

  3.   

    你 print_r($row); 看看就知道了
      

  4.   

    數據使用了序列化,執行一次反序列化即可,但你的數據有問題
    直接使用unserialize會返回false。$content = 'a:9:{s:4:"time";i:1405306402;s:4:"name";s:6:"新晨";s:5:"url";s:1:"-";s:4:"word";s:1:"-";s:5:"rpage";s:29:"http://www.baidu.com/test.html";s:5:"cpage";s:1:"-";s:2:"ip";s:15:"117.151.180.150";s:7:"ip_city";s:31:"中国北京市 北京市移动";s:4:"miao";s:1:"5";}';var_dump(unserialize($content)); // bool(false)
    因為你的數據中包含了\r 導致計算長度不對
    因此需要處理一下才可以正常unserialize
    function mb_unserialize($serial_str) {
        $serial_str= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str );
        $serial_str= str_replace("\r", "", $serial_str);      
        return unserialize($serial_str);
    }
    $content = mb_unserialize($content);//獲取time
    echo $content['time']; //1405306402