正则表达式在PHP中提取JavaScript变量

Nov*_*vak 4 javascript php arrays web-scraping

我有一个大的HTML文件,包含很多内容.我想'a'从整个文件中获取一个JavaScript变量,例如命名.

示例:(删除了大量实际内容)

<html>
    <head>
        <script>
            var a = [{'a': 1, 'b': 2}];
        </script>
    </head>
    <body>
        ....
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

应该从上面得到的是:

[{'a': 1, 'b': 2}]
Run Code Online (Sandbox Code Playgroud)

Jay*_*Jay 11

preg_match('#var a = (.*?);\s*$#m', $html, $matches);
echo $matches[1];
Run Code Online (Sandbox Code Playgroud)

说明:

  • 正则表达式将尝试匹配任何包含的行 var a =
  • 然后它将匹配所有内容,直到a ;,任意数量的空格\s*,然后是行的结尾$
  • m修改将尝试每行独立匹配,没有它,$就只是比赛然后结束这将是一个有点用处的字符串

空格任何量仅存在的情况下,你有一些空间的定义,没有其他原因(如人为错误)之后.如果您确定不会发生这种情况,可以删除\s*.

请注意,这不会取代完整的解析器.如果a定义了多行,则需要进行修改,如果定义了a多次(考虑范围,可以var a在全局范围内,然后var a在函数内),等等.