2015-06-14 16:37:29 4557次浏览 2条回复 1 2 0

php抓取页面的时候 经常要处理页面中的js,而js中的json是不要求key一定要被双引号包裹的。 那么 php 如何 json_decode 一个key没有被双引号包裹的json字符串呢?

网上能找到的解决办法是:

$str = preg_replace('/(\w+):/is', '"$1":', $str);

但这个办法 不是很好,因为 冒号在内容中也是很常见的,比如这样的json

{begin_time:"2015-06-14 17:00:00"}

你能想到什么更好,更通用的办法么?

觉得很赞
  • 回复于 2015-06-15 11:11 举报

    没遇到,学习中
    顺便帮忙顶!

  • 回复于 2015-06-15 13:47 举报

    用断言写了一个,勉强可以用一下...
    $str = preg_replace('/(\b\w+.\b)(\s*):(((?<=:).*\b){1})/is', '"$1":$3', $str);
    哪位大神提供更好的方法?

您需要登录后才可以回复。登录 | 立即注册