后端对 包含 &
字符的 url 链接,保存到数据库时,&
会自动被转义成 &
。
前者是html代码字符, 后者是HTML实体字符。
数据库中被转义的 url ,在后台网页中,由于 html实体
被浏览器识别,故能正常显示。
而前端通过API接口获取的 url ,则是包含 &
的 html实体
字符串。
故须将 转义字符
还原成 html字符
。
JS似乎并未自带转义html实体字符的功能,下面是网友封装的转义函数。
/**
* 把html转义成HTML实体字符
* @param str
* @returns {string}
* @constructor
*/
function htmlEncode(str) {
var s = "";
if (str.length === 0) {
return "";
}
s = str.replace(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/\'/g, "'");//IE下不支持实体名称
s = s.replace(/\"/g, """);
return s;
}
/**
* 转义字符还原成html字符
* @param str
* @returns {string}
* @constructor
*/
function htmlRestore(str) {
var s = "";
if (str.length === 0) {
return "";
}
s = str.replace(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/ /g, " ");
s = s.replace(/'/g, "\'");
s = s.replace(/"/g, "\"");
return s;
}
JS对HTML实体字符转义和反转义 https://www.cnblogs.com/LChenglong/p/12030514.html
全部HTML实体字符表 https://www.w3school.com.cn/tags/html_ref_entities.html