我有一个很大的HTML文件,其中包含很多内容。我想从整个文件中获得一个JavaScript变量,例如'a'
。
示例:(删除了大量实际内容)
<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];
说明:
- Regex将尝试匹配任何包含
var a =
的行 - 然后,它将匹配所有内容,直到
;
、任意数量的空间's*
,然后是行$
的末尾 m
修饰符将尝试独立地匹配每一行,如果没有它,$
将只匹配字符串的末尾,这将有点无用
任何数量的空格只有在定义后有一些空格的情况下才会出现,而不是其他原因(例如人为错误)。如果您确信不会发生这种情况,可以删除's*
。
请注意,这并不能取代全面的解析器。如果a
定义在多行上,如果a
定义不止一次(想想作用域,你可以在全局作用域上有var a
,然后在函数内有var a
),等等,你需要进行修改。