这种json字符串怎么处比较好

showdesc({"date":1505647332472,"content":"<div style=\"text-align: center;\"></div>"})

像这种头和尾巴被包含起来的,要怎么把里面的东西提取出来?
我先过用str_replace showdesc( 和 }),好像不太合适

阅读 3.8k
5 个回答
$s='showdesc({"date":1505647332472,"content":"<div style=\"text-align: center;\"></div>"})';
preg_match('#showdesc\((.*)\)#',$s,$m);
//echo '<pre>';print_r($m);
print_r(json_decode($m[1],1));

这是jsonp格式的数据,也就是一个js代码片段,创建一个同名函数即可,接受即可

<script>
    function showdesc(data) {
        console.log(data.date);
        console.log(data.content);
    }
    showdesc({"date":1505647332472,"content":"<div style=\"text-align: center;\"></div>"});
    //var str = 'showdesc({"date":1505647332472,"content":"<div style=\"text-align: center;\"></div>"})';
    //eval(str);
</script>

你需要多看几遍正则...

如果是固定格式,直接截取字符串即可。
前面已经有人说了正则匹配的方案了。

如果是固定的 那么如楼上所说用正则即可
如果不是固定的 那么可以从左往右找到第一个 ( 所在的位置
然后做个截取( java ):

str.substring(str.indexOf("("), str.length - 1);

这种字符串就是 jsonp:
callback(json)
所以找到截取位置即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题