2016-02-03 43 views
0

我遇到了将以下xAPI字符串解析为数组的问题。问题是parse_str()和parse_url()解析了包含在[content]中的引号中的URL,这些引用使JSON格式失效。PHP解析带有嵌入式JSON的URL编码的字符串

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:[email protected]","name":"beto","objectType":"Agent"}} 

我想结束的是在[content]数组元素中有一个完整的JSON字符串的元素数组。

有分析像parse_str字符串(的方式)做......而忽略了JSON元素的引号内的任何东西 - 例如,{"id":"http://mytest.myfavsite.com/?post_type=gb_xapi_content&p=52&preview=true"}

感谢您,提前任何想法。

+1

而不是通过网址获取它,你有另一种获取该数​​据的方式吗?像'POST'而不是? – Ghost

+0

@Beto请注意,您提供的字符串不是网址。你确定它是正确的吗?那么,如果可能的话,请按照鬼魂的想法。我还没有找到我以前的答案最好的。 – fusion3k

回答

0

尝试登录json_decode($string),然后在选定的元素上运行parse_str()

0

这个问题很有趣。

尽管将搜索干净的解决方案,你当然可以尝试在粗鲁的,老式的方法:

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

这工作得很好!