转换php';带javascript的htmlspecialchars()

转换php';带javascript的htmlspecialchars(),javascript,jquery,Javascript,Jquery,我有一个从PHP写入javascript的变量(使用json\u encode),看起来有点像这样: mappoints[x]['about'] = 'Administrator: Foo Barlt;br />Telephone: 555-4202<br />Email: bert@hotmail.com<br />Website: www.domain.com' 我正在使用的谷歌地图地图点。使用json\u encode

我有一个从PHP写入javascript的变量(使用
json\u encode
),看起来有点像这样:

mappoints[x]['about'] = 'Administrator: Foo Barlt;br />Telephone: 555-4202<br />Email: bert@hotmail.com<br />Website: www.domain.com'
我正在使用的谷歌地图地图点。使用
json\u 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'];
var description=”“+mappoints[x]['name']+“Director:“+mappoints[x]['Director']+”
“+mappoints[x]['about'];

变量中的HTML都很好,直到我添加了
about
索引。我还没有附加或尝试过任何函数,似乎都无法提供正确的HTML。

是否可以:

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

返回mystring.replace(/&/g,“&;”)。replace(/>/g,”)。replace(/是否可以:

return mystring.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
返回mystring.replace(/&/g,“&;”)。replace(/>/g,”)。replace(/试试这个

decodeURIComponent(str) or `unescape(str)` or `decodeURI(str)`
试试这个

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

您可以使用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();
mappoints[x]['about']='管理员:Foo Barlt;br/电话:555-4202br/电子邮件:bert@hotmail.combr/网址:www.domain.com'
mappoints[x]['about']=$('').append(mappoints[x]['about']).text();


基本上,当您将html添加到dom中时,它会将实体显示为它们所代表的字符,您可以接收返回的数据,就像您在浏览器中看到的那样,是
文本
,而不是带有实体的html。如果您想返回可以使用的html。

您可以使用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();
mappoints[x]['about']='管理员:Foo Barlt;br/电话:555-4202br/电子邮件:bert@hotmail.combr/网址:www.domain.com'
mappoints[x]['about']=$('').append(mappoints[x]['about']).text();


基本上,当您将html添加到dom中时,它会将实体显示为它们所代表的字符,使用它,您可以接收返回的数据,就像您在浏览器中看到的那样,作为
文本
,而不是带有实体的html。如果您想要返回html,您可以使用。

仅仅因为@Musa的想法很好,但我需要一些重新解释,我想在此发布一个快速函数,它将根据@Musa的设计处理htmlspecialchars,非常棒:

函数htmlspecialchars\u解码(字符串){
$('body')。追加(“+string+”);
var result=$('#testext').text();
$('#testext').remove();
返回结果;

}

正因为@Musa的想法很好,但我需要重新解释一下,我想在这里发布一个快速函数,根据@Musa的设计,它可以处理htmlspecialchars,非常好:

函数htmlspecialchars\u解码(字符串){
$('body')。追加(“+string+”);
var result=$('#testext').text();
$('#testext').remove();
返回结果;

};

这正是我要找的,不幸的是它似乎不起作用:(这正是我要找的,不幸的是它似乎不起作用:(如果你附加到DOM,字符被解释为HTML,所以当你使用text()时)您得到的字符串已经被解释过了。如果您附加到DOM,字符将被解释为HTML,因此当您使用text()时,您得到的字符串已经被解释过了。它没有留下任何痕迹,也没有留下任何痕迹。