我有一个 HTML 页面,它在脚本标签中有一个非常大且非常复杂的 JSON 块。
我想提取 JSON,以便可以在 php 脚本中对其进行解码。
JSON 看起来像:
<script type="text/javascript">
var user_list_data_obj = (
({
... truncated ...
})
);
... some more js ...
</script>
脚本标签不能用在pattern中,因为它们之间还有其他的js,反正也没有什么可以让它们unqiue的。
我相信我需要匹配变量名,以及第一次出现的 '}));' 但我尝试匹配失败了。
到目前为止,我得到的是:
$pattern = '/var user_list_data_obj = \(\s\(({.*})\)\s\);/';
什么都不返回。
我在这种模式下做错了什么?我知道很难将任何具有打开和关闭分隔符(如 JSON 等)的东西与正则表达式匹配,但在这种情况下应该是可能的,不是吗?
编辑:
我正在尝试将整个“user_list_data_obj”对象解析到我的 php 脚本中。但实际上,我感兴趣的是几个“columns :[]”数组,所以如果将它们分开更容易,那么这样做可能是有意义的。
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' }
],