【问题标题】:checking value if it serialized or not检查值是否序列化
【发布时间】:2011-07-06 23:25:59
【问题描述】:

我将数据存储在数据库表中作为序列化。

如果值被序列化,我的一个函数需要返回 true。

foreach($data as $r):
if($r->options is serialized) {
  $unserialized_value = unserialize($r->options);
}
endforeach;

【问题讨论】:

  • 无法检测是序列化数据还是与序列化数据一模一样的字符串。另外,如果您有这样的问题 - 那么这意味着您在创建数据库架构时没有花费足够的时间。

标签: php serialization


【解决方案1】:

【讨论】:

  • 是的,让我们猜测而不是创建正确数据库结构!
  • 我不评价这种方法的优劣,我只是简单地回答了这个问题。
  • @Dagon:正如我在 cmets 中所说的那样 - 您不能 100% 正确地说出字符串是序列化数据还是只是包含看起来像序列化数据的常规字符串。你所能做的只是猜测。
  • 你还要继续挖吗?
  • @Dagon:s:5:"hello";s:5:"hello";。哪个是序列化字符串,哪个只是一个包含 3 个由 : 分隔的文字的字符串?
【解决方案2】:

我认为您应该指定您知道已序列化的列并应用此代码

 function c($r=$result_array){

    $full_unserialize_array=array();
    foreach($r as $s){

     $p= @unserialize($s);
     if($p == false){
       $full_unserialize_array[]=$s;

     }else{
       $full_unserialize_array[]=$p;
     }//end else
}//end foreach
 return $full_unserialize_array;

 }//end function c
  print_r($full_unserialize_array);

对不起,我是新来的^_^

`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 2016-05-19
    • 1970-01-01
    • 2010-12-02
    • 2016-12-30
    • 1970-01-01
    • 2011-02-22
    • 2018-11-16
    相关资源
    最近更新 更多