如何从stdClass字符串中提取值?

时间:2018-06-18 11:09:29

标签: php serialization

我在数据库中执行一些查询后得到字符串,如

 objectString = 'O:8:"stdClass":1:{s:5:"$date";O:8:"stdClass":1:{s:11:"$numberLong";s:13:"1546297200000";}}

我想从stdClass字符串中获取$ numberLong值。我试过了

      var dateObj = new Date(objectString.$date.$numberLong - 1000);

它会在此行抛出错误消息

"未捕获的TypeError:无法读取属性' $ numberLong'未定义的     在getDateStringObject"

请帮助!!!

2 个答案:

答案 0 :(得分:1)

这看起来像序列化的stdObject。如果您在任何时候从PHP获得此值,我建议unserializing将其返回给javascript。

如果操作正确,您将能够按如下方式访问日期:

var dateObj = new Date(object.date.numberLong - 1000);

如果您不能使用PHP来反序列化该对象,那么您可以使用正则表达式来匹配该值,如下所示:



var objectString = 'O:8:"stdClass":1:{s:5:"$date";O:8:"stdClass":1:{s:11:"$numberLong";s:13:"1546297200000";}}'
var pattern = /("\$numberLong")(.+)("\d+")/g
var match = pattern.exec(objectString);
console.log(match[3]);




答案 1 :(得分:0)

objectString看起来像一个序列化对象(参见PHP serialize)。

您需要unserialize将其放入PHP对象中才能使用它的属性(如$numberLong

你可以看一下How to use php serialize() and unserialize()的一些简单解释。