我的数据库使用特殊字符返回以下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字符。并将ö
之类的所有字符转换为原始字符。所以上面JSON中的description
实际上应该是这样的
PersönlichkeitUniversität“
在将数组编码为JSON之前,我在数组上执行array_walk
,并在每个元素上执行strip_tags
。
这可以。 (这导致了上面的JSON。)。
为了让这些人回来,我试过了:
1. encoding again with utf8_encode
2. htmlspecialchars_decode
3. html_entity_decode //This one is eliminating the character altogether.
但没有任何东西给原来的字母回复。
有什么想法吗?
更新
我试过这个。但现在说明字段返回null
array_walk_recursive($results, function (&$val) {
$val = strip_tags(html_entity_decode($val));
});
$results = json_encode( $results);
答案 0 :(得分:1)
html_entity_decode
应该做到这一点。我认为你的问题在别的地方。请记住,json_encode
仅接受UTF-8字符。所以你可能需要utf8_encode
你的字符串。
答案 1 :(得分:1)
我在寻找一些东西时谈到这个话题。 3年后,这个问题仍然没有答案。
json_encode接受选项作为第二个参数。如果您使用如下,特殊字符将显示为原始。
json_encode($data, JSON_UNESCAPED_UNICODE)