Regex-需要在特定javascript变量的站点源代码之间拉取json



我正在使用php获取url的源html。一旦我有了那个源代码,我想使用regex来提取一个特定的javascript变量值。

例如:

<script>
let varOne.dataLayer['products'] = [
{"prdocutId":1,"productName":"foo"},
{"productId":2,"proudctName":"bar"}
];
// Here's a comment
let vartwo.dataLayer['foo'] = 'bar';
</script>

我尝试了以下正则表达式:

varOne.dataLayer['products']s?=s?([^;]*)

这是有效的,但只是因为没有"在产品阵列中的任何位置。即如果productID 1的productName是类似于";foo;但不是酒吧";那么正则表达式就不起作用了。

有没有一种方法可以告诉regex在";varOne.dataLayer[产品]=";以便我可以自信地获得数组的值?

这是我一直在玩的一把regex101小提琴:https://regex101.com/r/EXgTW1/1

Regex对此会很棘手,因为您可能无法控制变量或JS格式。如果您可以使用像这样的库将JS变量转换为PHP变量,那么它就不会那么脆弱了。

最新更新