Home > Backend Development > PHP Tutorial > php正则匹配截取json

php正则匹配截取json

WBOY
Release: 2016-06-06 20:49:16
Original
2600 people have browsed it

请教一个正则截取问题

<code class="lang-php">
$script='<script type="text/javascript">
cgiData={
pageIdx : 0,
pageCount : 1,
pageSize : 100,
groupsList : ({"groups":[{"id":0,"name":"未分组","cnt":16},{"id":1,"name":"黑名单","cnt":0},{"id":2,"name":"星标组","cnt":0}]}).groups,
        friendsList : ({"contacts":[{"id":6,"nick_name":"yan","remark_name":"","group_id":0},{"id":8,"nick_name":"mm","remark_name":"","group_id":0},{"id":4,"nick_name":"gg","remark_name":"","group_id":0},{"id":2,"nick_name":"sa","remark_name":"","group_id":0}]}).contacts,
            currentGroupId : 0,
        type : 0,
    userRole : 1 * 1,
    verifyMsgCount :  * 1
};
seajs.use("user/index");
</script>';

</code>
Copy after login
Copy after login

怎么把contacts中间的[{"id":6,"nickname":"yan","remarkname":"","groupid":0},{"id":8,"nickname":"mm","remarkname":"","groupid":0},{"id":4,"nickname":"gg","remarkname":"","groupid":0},{"id":2,"nickname":"sa","remarkname":"","groupid":0}]这段截取出来?

回复内容:

请教一个正则截取问题

<code class="lang-php">
$script='<script type="text/javascript">
cgiData={
pageIdx : 0,
pageCount : 1,
pageSize : 100,
groupsList : ({"groups":[{"id":0,"name":"未分组","cnt":16},{"id":1,"name":"黑名单","cnt":0},{"id":2,"name":"星标组","cnt":0}]}).groups,
        friendsList : ({"contacts":[{"id":6,"nick_name":"yan","remark_name":"","group_id":0},{"id":8,"nick_name":"mm","remark_name":"","group_id":0},{"id":4,"nick_name":"gg","remark_name":"","group_id":0},{"id":2,"nick_name":"sa","remark_name":"","group_id":0}]}).contacts,
            currentGroupId : 0,
        type : 0,
    userRole : 1 * 1,
    verifyMsgCount :  * 1
};
seajs.use("user/index");
</script>';

</code>
Copy after login
Copy after login

怎么把contacts中间的[{"id":6,"nickname":"yan","remarkname":"","groupid":0},{"id":8,"nickname":"mm","remarkname":"","groupid":0},{"id":4,"nickname":"gg","remarkname":"","groupid":0},{"id":2,"nickname":"sa","remarkname":"","groupid":0}]这段截取出来?

(?

注:PHP里好像需要把"转义一下变成\"
顺便推荐一个正则参考用的网址:http://deerchao.net/tutorials/regex/regex.htm

PHP的DEMO:

<code>preg_match_all("/\[{.*?\}]/is", $script, $matches);
$result = json_decode($matches[0][1]);
</code>
Copy after login

这个正则不是最佳方案,不过结果是你想要的就是。

我觉得没必要把中间的截取出来,

  • 很简单的就可以把前后两个script剥离
  • json_encode剩下的字符串
  • 访问你需要的值

------------------ update ------------------

<code class="lang-php">preg_match_all("/(?</code>
Copy after login

结果:

<code>array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(226) "[{"id":6,"nick_name":"yan","remark_name":"","group_id":0},{"id":8,"nick_name":"mm","remark_name":"","group_id":0},{"id":4,"nick_name":"gg","remark_name":"","group_id":0},{"id":2,"nick_name":"sa","remark_name":"","group_id":0}]"
  }
}
</code>
Copy after login

关于那个正则表达式你可以在这个网站中优化:
debuggex

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template