4

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

示例:(删除了很​​多实际内容)

<html>
    <head>
        <script>
            var a = [{'a': 1, 'b': 2}];
        </script>
    </head>
    <body>
        ....
    </body>
</html>

从上面应该得到的是:

[{'a': 1, 'b': 2}]
4

1 回答 1

11
preg_match('#var a = (.*?);\s*$#m', $html, $matches);
echo $matches[1];

解释:

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

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

请注意,这不会取代成熟的解析器。a如果定义超过一行,如果a定义不止一次(考虑范围,您可以var a在全局范围内,然后var a在函数内)等,您将需要进行修改。

于 2012-07-07T21:17:58.073 回答