我有一个很大的 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/