【问题标题】:PHP Parse URL-encoded string with embedded JSON嵌入 JSON 的 PHP 解析 URL 编码字符串
【发布时间】:2016-05-12 00:31:34
【问题描述】:

我在将以下 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"}

提前感谢您的任何想法。

【问题讨论】:

  • 不是通过 url 获取数据,您还有其他获取数据的方法吗?喜欢POST 吗?
  • @Beto 请注意,您提供的字符串不是 URL。你确定它是正确的吗?然后,如果可能,请遵循 Ghost 的想法。我没有找到最好的答案。

标签: php json parse-url


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这个问题很有趣。

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

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

    这很好用!

    【讨论】:

      猜你喜欢
      • 2010-11-09
      • 2014-01-24
      • 1970-01-01
      • 2013-06-26
      • 2017-05-31
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多