使用javascript转换php的htmlspecialchars()

时间:2014-04-17 12:28:13

标签: javascript jquery

我有一个从PHP编写到我的javascript中的变量(使用json_encode),看起来有点像这样:

mappoints[x]['about'] = 'Administrator: Foo Barlt;br />Telephone: 555-4202<br />Email: bert@hotmail.com<br />Website: www.domain.com'

我正在使用谷歌地图地图点。使用json_encode似乎非常挑剔我可以和不能进入的字符,所以我想知道如何使用javascript将这些特殊的html字符转换为真正的html字符?

更新

我构建变量的方式是:

var description = "<h3 style='margin: 0; padding: 0;'>" + mappoints[x]['name'] + "</h3><b>Director:</b> " + mappoints[x]['director'] + "<br/>" + mappoints[x]['about'];

变量中的HTML都很好,直到我添加about索引。我没有附加或试过的功能似乎给了我正确的HTML。

4 个答案:

答案 0 :(得分:4)

您可以使用dom为您解码这些实体。

mappoints[x]['about'] = 'Administrator: Foo Barlt;br /&gt;Telephone: 555-4202&lt;br /&gt;Email: bert@hotmail.com&lt;br /&gt;Website: www.domain.com'
mappoints[x]['about'] = $('<div/>').append(mappoints[x]['about']).text();

http://jsfiddle.net/5FTCX/

基本上,当您将html添加到dom时,它会将实体显示为他们所代表的字符,使用.text()您可以在浏览器中将其显示为text ,而不是与实体的HTML。如果您想要回复html,可以使用.html() e.g.

答案 1 :(得分:1)

是否可以:

return mystring.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");

从这里开始:Convert special characters to HTML in Javascript

答案 2 :(得分:0)

仅仅因为@Musa的想法很棒但需要对我进行一些重新解释,我希望在这里发布一个快速功能,根据@ Musa的设计处理htmlspecialchars:

function htmlspecialchars_decode(string) { $('body').append("<span style='display:none;visibility:hidden;' id='tempText'>" + string + "</span>"); var result = $('#tempText').text(); $('#tempText').remove(); return result; };

答案 3 :(得分:-1)

试试这个

decodeURIComponent(str) or `unescape(str)` or `decodeURI(str)`