gpt4 book ai didi

php - 使用正则表达式 (PHP) 从 HTML 页面中提取 JSON

转载 作者:行者123 更新时间:2023-12-04 04:58:13 33 4
gpt4 key购买 nike

我有一个 HTML 页面,它在脚本标记中有一个非常大且非常复杂的 JSON 块。

我想提取 JSON,以便我可以在 php 脚本中对其进行解码。

JSON 看起来像:

<script type="text/javascript">
var user_list_data_obj = (
({

... truncated ...

})
);

... some more js ...
</script>

脚本标签不能用在模式中,因为它们之间还有其他的JS,无论如何也没有什么可以让它们变得unqiue。

我相信我需要匹配变量名,以及第一次出现的 '}));'但我试图匹配的尝试失败了。

到目前为止我所得到的是:
$pattern = '/var user_list_data_obj = \(\s\(({.*})\)\s\);/';

什么都不返回。

我在那种模式中做错了什么?我知道很难将任何具有开始和结束分隔符(如 JSON 等)的内容与正则表达式匹配,但在这种情况下应该是可能的,不是吗?

编辑:

我正在尝试将整个“user_list_data_obj”对象解析到我的 php 脚本中。但实际上,我感兴趣的位是几个“列:[]”数组,因此如果将它们分开更容易,那么这样做可能是有意义的。

columns[] 数组看起来像
columns : [
{ display_value : '<input type="checkbox" name="user" value="username">'},
{ display_value : 'username', sort_value : 'username'},
{ display_value : 'username', sort_value : 'username'},
{ display_value : 'Enabled', sort_value : '1' },
{ display_value : '<img class="" src="/enabled.gif">', sort_value : '1' },
{ display_value : '<img class="" src="/enabled.gif">', sort_value : '1' },
{ display_value : '<img class="" src="/enabled.gif">', sort_value : '1' }
],

最佳答案

我能够将整个 json 对象与以下内容匹配

/user_list_data_obj\s*=\s*\(\s*\({(.*?)}\)\s*\);/

但实际上,我最终使用 preg_match_all 来匹配 json 中的每个 columns[] 数组:
/columns\s*:\s*\[.*?\],/s

关于php - 使用正则表达式 (PHP) 从 HTML 页面中提取 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16488121/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com