doucai9270 2009-09-02 20:28
浏览 113
已采纳

检查字符串是否序列化?

What's the best way to determine whether or not a string is the result / output of the serialize() function?

  • 写回答

11条回答 默认 最新

  • douzhaiya3968 2009-09-02 20:31
    关注

    I'd say, try to unserialize it ;-)

    Quoting the manual :

    In case the passed string is not unserializeable, FALSE is returned and E_NOTICE is issued.

    So, you have to check if the return value is false or not (with === or !==, to be sure not to have any problem with 0 or null or anything that equals to false, I'd say).

    Just beware the notice : you might want/need to use the @ operator.

    For instance :

    $str = 'hjkl';
    $data = @unserialize($str);
    if ($data !== false) {
        echo "ok";
    } else {
        echo "not ok";
    }
    

    Will get you :

    not ok
    


    EDIT : Oh, and like @Peter said (thanks to him!), you might run into trouble if you are trying to unserialize the representation of a boolean false :-(

    So, checking that your serialized string is not equal to "b:0;" might be helpful too ; something like this should do the trick, I suppose :

    $data = @unserialize($str);
    if ($str === 'b:0;' || $data !== false) {
        echo "ok";
    } else {
        echo "not ok";
    }
    

    testing that special case before trying to unserialize would be an optimization -- but probably not that usefull, if you don't often have a false serialized value.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测