【问题标题】:php: json_decode containing HTML fails to decodephp:包含 HTML 的 json_decode 无法解码
【发布时间】:2020-01-09 16:02:40
【问题描述】:

我需要使用客户的 API 来加载仅包含以下内容的 JSON:

{"html" : "foo"}

其他服务正在使用该 API,所以我很确定它是有效的。

但是,当尝试使用 json_decode 对其进行解码时,我总是得到一个空字符串,这意味着它无效。我发现我需要通过替换来“修复”JSON-String:

$json = str_replace("\\>", "\\\\>", $json); // \> = invalid json

它主要适用于每个请求,但不适用于某些其他请求,但调试起来非常棘手,我无法想象替换是正确的方法。 我将如何将json字符串转换为有效字符串的简单方法?

谢谢

【问题讨论】:

  • 您展示了 JSON 应包含的内容,但您能否添加一个在 str_replace() 之前获得的值的示例?
  • 我们不能没有一个例子。可能这不是一个有效的 JSON,但有问题的位可以为您的其他服务恢复。
  • 你确定你的 html 有问题吗?你用json_last_error了吗?
  • 不幸的是 json 很大,所以我无法调试/判断出了什么问题.. json_last_error 说 4 - 语法错误

标签: php html json


【解决方案1】:

好的,我可以找出问题所在:

HTML 在结束标记中包含反斜杠,例如 <br\> 您需要像这样替换它们:

$json = str_replace("\\>", "\\\\>", $json);

json_decode 会起作用

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2013-08-18
    • 2021-09-04
    相关资源
    最近更新 更多