使用PHP regex从html中提取JSON对象

时间:2017-08-25 10:14:07

标签: php json regex parsing html-parsing

在阅读完所有相关主题后,我找不到任何能够从html内容中提取完整json对象的正则表达式,所以我希望有人可以帮我找到正确的正则表达式来解决问题。

例如,我想要提取的json看起来像这样:

"taxonomy": {"page":"/products/1/","price":"350.00","country_code":"gb","brand":"apple"},

我试图提取html中java脚本函数内的整个“分类法”对象。

我已经尝试preg_match('/\taxonomy\s*=(.+)(?:;|/', $file, $m);但是没有快乐和正则表达式是我想要学习的东西。

我的目标是让正则表达式解析html并从html中拉出taxonmy对象,所以我离开了以下内容:{"page":"/products/1/","price":"350.00","country_code":"gb","brand":"apple"}然后我可以json_decode

如果有人能帮助我找到正确的正则表达式,我将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

这个正则表达式模式应该可以工作,但这取决于你的完整HTML看起来像什么

<?php
$file = '"taxonomy": {"page":"/products/1/","price":"350.00","country_code":"gb","brand":"apple"},
';
preg_match('@"taxonomy":(.*?)\},@s', $file, $m);

if(!empty($m[1])){
    $jsonString = "[".$m[1] . "}]";
    $array = json_decode($jsonString, true);
    print_r($array);
}

https://regex101.com/r/fytDO8/1/