2

我的数据库返回以下带有特殊字符的 JSON。我需要将其转换回原始字符:

{   "event_id":"5153",
      "name":"Event Test",
      "description":"Persönlichkeit Universität"",
      "start_time":"2013-04-24 9:00 AM EST",
        "end_time":"2013-04-24 5:00 PM EST"  
}

我想去掉所有的 HTML 字符。并将所有喜欢的字符转换&ouml为原始字符。所以description上面的 JSON 实际上应该是这样的

Persönlichkeit Universität"

array_walk在将数组编码为 JSON 之前对数组进行处理,并对strip_tags每个元素进行处理。这可以。(这导致了上面的 JSON。)。

为了找回字符,我尝试了:

  1. encoding again with utf8_encode
  2. htmlspecialchars_decode
  3. html_entity_decode  //This one is eliminating the character altogether.

但是没有任何东西可以恢复原始字符。

有任何想法吗?

更新:

我试过这个。但现在描述字段返回为空

    array_walk_recursive($results, function (&$val) {
    $val = strip_tags(html_entity_decode($val));
});

$results = json_encode( $results);
4

2 回答 2

1

html_entity_decode应该做的伎俩。我认为您的问题出在其他地方。请记住,json_encode它只接受 UTF-8 字符。所以你可能需要utf8_encode你的字符串。

于 2013-04-17T21:34:56.480 回答
1

我是在找东西的时候来到这个话题的。3年后,这个问题仍然没有答案。

json_encode 接受选项作为第二个参数。如果您如下使用它,特殊字符将显示为原始字符。

json_encode($data, JSON_UNESCAPED_UNICODE)
于 2017-04-11T11:20:18.530 回答