PHP解析带有嵌入式JSON的URL编码字符串

时间:2016-02-03 00:29:52

标签: php json parse-url

我在将以下xAPI字符串解析为数组时遇到问题。问题是parse_str()和parse_url()都解析[content]中包含的引号内的URL ...这会杀死JSON格式。

Authorization=Basic YmV0b1234XZlddle9ighrXRvc3VhdmVwY999929yZA==&Content-Type=application/json&X-Experience-API-Version=1.0.0&statementId=ef0ca1d6-1234-4e02-b403-7d4aab0df62c&content={"verb":{"id":"http://adlnet.gov/expapi/verbs/experienced"},"object":{"id":"http://mytest.myfavsite.com/?post_type=gb_xapi_content&p=52&preview=true/6lgIX5Hxep0","definition":{"name":{"und":"SpecificStatement"},"description":{"und":"SpecificStatement"},"type":"http://adlnet.gov/expapi/activities/module"},"objectType":"Activity"},"context":{"contextActivities":{"grouping":{"id":"http://mytest.myfavsite.com/?post_type=gb_xapi_content&p=52&preview=true"},"parent":{"id":"http://mytest.myfavsite.com/?post_type=gb_xapi_content&p=52&preview=true"}},"registration":"36fc1ee0-2849-1234-b697-71cd4cad1b6e"},"version":"1.0.0","actor":{"mbox":"mailto:betosuave@home.tld","name":"beto","objectType":"Agent"}}

我想要结束的是[content]数组元素中包含完整JSON字符串的元素数组。

是否有像parse_str()那样解析字符串的方法...而忽略JSON元素引号内的任何内容 - 例如{"id":"http://mytest.myfavsite.com/?post_type=gb_xapi_content&p=52&preview=true"}

提前感谢您的任何想法。

2 个答案:

答案 0 :(得分:0)

首先尝试json_decode($string),然后在所选元素上运行parse_str()

答案 1 :(得分:0)

这个问题很有意思。

虽然会寻找一个干净的解决方案,但你当然可以用粗鲁的,老式的方式尝试:

json_decode( substr( $str, strpos( $yourString, '&content=' )+9 ) )

这很好用!