正则表达式从Scrapped HTML中提取Javascript对象

时间:2016-06-13 10:19:13

标签: javascript php html regex web-scraping

我有一整页HTML报废,包含很多标记,包括HTML / CSS / JS代码。

以下示例(剥离内容)

<p>blah blah blah html</p>
<script type="text/javascript">window._userData ={"country_code": "PK", "language_code": "en",user:[{"user": {"username": "johndoe", "follows":12,"biography":"blah blah blah","feedback_score":99}}],"another_var":"another value"} </script>
<script> //multiple script tags can be here... </script>
<p>blah blah blah html</p>

现在我想在window._userData中提取对象,然后如果可能的话将提取的字符串转换为PHP对象/数组。

我已尝试在SO上找到一些正则表达式,但无法使其正常工作。

我也在这里尝试了类似的答案Regular expression extract a JavaScript variable in PHP

由于

1 个答案:

答案 0 :(得分:2)

通过正则表达式找到

preg_match('/\bwindow\._userData\s*=(.+)(?=;|<\/script)/', $html, $m);

并解码

json_decode(trim($m[1]), true);

但是之前你应该在那个html中制作正确的json。