php如何用正则解析html中的js对象

有一些html中的数据是页面加载完成后执行的js代码生成的,源数据存储在html的script中,用php来获取可以这样写:

        $html=<<<EOF

        ......

    <script>AA.BB = {

    "article_id": "20200511A041GF",

    "article_type": "0",

    "title": "美国确诊超132万!白宫称副总统彭斯“目前没有隔离”",

    "iNewsRecommendLevel": 1,

    "abstract": null,

    "catalog1": "politics",

    "catalog2": "politics_international",

    "introduction": "",

    "media": "央视新闻",

    "media_id": "58",

    "pubtime": "2020-05-11 08:09:07",

    "comment_id": "5221605433",

    "tags": "美国_社会,白宫,彭斯,约翰斯·霍普金斯大学,自我隔离",

    "content": null,

    "political": 1,

    "artTemplate": null,

    "FztCompetition": null,

    "FCompetitionName": null,

    "cms_id": "20200511A041GF00",

    "from_where": "sumeru-node",

    "videoArr": []

}</script>

        ......

EOF;

        $pattern='/AA\.BB\s*=\s*\{(.*?)\}/ms';

        preg_match($pattern,$html,$match);

  var_dump($match);


我们需要的数据再$match[1]中,给$match[1]中的数据两边加上花括号就是json格式的数据,可以用json_decode来解析成数组方便使用

        $data=json_decode('{' . $match[1] . "}", true);

        var_dump($data);


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。