2017-08-25 172 views
2

阅读所有相关的线程后,我找不到任何显示正则表达式能够从html内容中提取完整的json对象,所以我希望有人可以帮助我得到正确的正则表达式来解决问题。从HTML中使用PHP正则表达式提取JSON对象

例如JSON的即时通讯寻求提取看起来是这样的:

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

我试着提取了整个“分类学”对象,它是HTML中的Java脚本函数内。

我试过preg_match('/\taxonomy\s*=(.+)(?:;|/', $file, $m);但没有喜悦和正则表达式是我试图学习的东西。

进出口目标有正则表达式解析HTML,并与下面从HTML这样的IM左边拉taxonmy对象:{"page":"/products/1/","price":"350.00","country_code":"gb","brand":"apple"},我可以再json_decode

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

+0

为什么downvote?我们在某个时候都需要生活中的帮助,我们都在某个时候开始。我想从有更多经验的人那里寻求一点帮助是件坏事? – Jrad51

+0

不要担心放弃投票,有人只是比他们的大脑快得多,查看我的答案。 – vietnguyen09

回答

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/

+0

您的正则表达式忽略了右括号,并在开头括号之前捕获了所有的空格。 – tima

+0

我能够从小提琴中得到这个工作,但用上面的答案,它抛出了一个未知的修饰符'g'错误,但是从你提供的小提琴中我能够使用下面的工作:/“分类法”:(。 *?)\},/ – Jrad51

+0

因此,我非常非常满意您的时间和精力,非常感谢。非常感谢:) – Jrad51