php - 正则表达式在 PHP 中提取一个 JavaScript 变量

标签 php javascript arrays web-scraping

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

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

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

从上面应该得出的是:

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

最佳答案

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

解释:

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

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

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

关于php - 正则表达式在 PHP 中提取一个 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11378690/

相关文章:

c - 有没有办法用指针+变量来遍历数组?

php - 在PHP中查找格式为 'mm/dd/yyyy'的两个日期之间的天数

javascript - 当 div 清空时,Ajax 加载的弹出图像并不总是清除

php - 限制聊天记录大小

javascript - 使用另一个对象数组过滤对象数组,而不知道对象中有哪些属性

javascript - 在 javascript 应用程序中处理特定于环境的配置

javascript - 对二维数组使用 .map 函数 - React

javascript - 将元素数组位置更改为顶部

javascript - 带有 jQ​​uery 验证插件的新 reCaptcha

php - 根据屏幕大小从数据库中获取不同的图像