【发布时间】:2014-11-13 10:27:10
【问题描述】:
JavaScript 中是否有与 PHP 中的 htmlentities($string, ENT_QUOTES) 相同的函数?找了好久都没找到,大家推荐正则表达式。
只是想确保在我尝试之前没有其他更简单的方法
【问题讨论】:
标签: javascript php quotes
JavaScript 中是否有与 PHP 中的 htmlentities($string, ENT_QUOTES) 相同的函数?找了好久都没找到,大家推荐正则表达式。
只是想确保在我尝试之前没有其他更简单的方法
【问题讨论】:
标签: javascript php quotes
看到这个tutorial
它是 PHP htmlentities 函数的“端口”:
function htmlEntities(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
}
【讨论】:
嗯,有 PHP.js 的实现:http://phpjs.org/functions/htmlentities/
function htmlentities(string, quote_style, charset, double_encode) {
// discuss at: http://phpjs.org/functions/htmlentities/
// original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// improved by: nobbler
// improved by: Jack
// improved by: Rafał Kukawski (http://blog.kukawski.pl)
// improved by: Dj (http://phpjs.org/functions/htmlentities:425#comment_134018)
// bugfixed by: Onno Marsman
// bugfixed by: Brett Zamir (http://brett-zamir.me)
// input by: Ratheous
// depends on: get_html_translation_table
// example 1: htmlentities('Kevin & van Zonneveld');
// returns 1: 'Kevin & van Zonneveld'
// example 2: htmlentities("foo'bar","ENT_QUOTES");
// returns 2: 'foo'bar'
var hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style),
symbol = '';
string = string == null ? '' : string + '';
if (!hash_map) {
return false;
}
if (quote_style && quote_style === 'ENT_QUOTES') {
hash_map["'"] = ''';
}
if ( !! double_encode || double_encode == null) {
for (symbol in hash_map) {
if (hash_map.hasOwnProperty(symbol)) {
string = string.split(symbol)
.join(hash_map[symbol]);
}
}
} else {
string = string.replace(/([\s\S]*?)(&(?:#\d+|#x[\da-f]+|[a-zA-Z][\da-z]*);|$)/g, function(ignore, text, entity) {
for (symbol in hash_map) {
if (hash_map.hasOwnProperty(symbol)) {
text = text.split(symbol)
.join(hash_map[symbol]);
}
}
return text + entity;
});
}
return string;
}
【讨论】:
JavaScript 没有任何方便的函数来生成转义的 HTML。
在 JavaScript 中为 HTML 转义数据通常使用 DOM 方法完成,并且避免将 HTML 字符串完全混合在一起。
element.setAttribute("data-foo", 'Example value with a " in it');
在大多数需要将文本转换为 HTML 字符串的情况下(即,将其放入当前文档不是最终目标),解决方法是创建一个 div 元素,然后对其使用 DOM 方法,然后阅读div 的innerHTML 属性。
【讨论】:
你可能正在寻找这个
var encodedStr = rawStr.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {
return '&#'+i.charCodeAt(0)+';';
});
注意,那个
此代码会将给定范围内的所有字符(unicode 00A0 - 9999,以及与号、大于和小于)替换为其 html 实体等效项,即 nnn;其中 nnn 是我们从 charCodeAt 获得的 unicode 值。 ref
【讨论】: