Самая простая и удобная
function htmlspecialchars( html){ var div = document.createElement('div'); div.innerText = html; return div.innerHTML; }
но это работа с дом. Медленно.
Другой вариант.
function htmlspecialchars(str) { if (typeof(str) == "string") { str = str.replace(/&/g, "&"); /* must do & first */ str = str.replace(/"/g, """); str = str.replace(/'/g, "'"); str = str.replace(/</g, "<"); str = str.replace(/>/g, ">"); } return str; }
далее
Более сложная, по параметрам схожа с php
function htmlspecialchars (string, quote_style, charset, double_encode) { var optTemp = 0,i = 0,noquotes = false; if (typeof quote_style === 'undefined' || quote_style === null) { quote_style = 2; } string = string+''; if (double_encode !== false) { // Put this first to avoid double-encoding string = string.replace(/&/g, '&'); } string = string.replace(/</g, '<').replace(/>/g, '>'); var OPTS = { 'ENT_NOQUOTES': 0, 'ENT_HTML_QUOTE_SINGLE': 1, 'ENT_HTML_QUOTE_DOUBLE': 2, 'ENT_COMPAT': 2, 'ENT_QUOTES': 3, 'ENT_IGNORE': 4 }; if ( quote_style === 0 ) { noquotes = true; } if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags quote_style = [].concat(quote_style); for (i = 0; i < quote_style.length; i++) { // Resolve string input to bitwise e.g. 'ENT_IGNORE' becomes 4 if (OPTS[quote_style[i]] === 0) { noquotes = true; }else if (OPTS[quote_style[i]]) { optTemp = optTemp | OPTS[quote_style[i]]; } } quote_style = optTemp; } if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) { string = string.replace(/'/g, '''); } if (!noquotes) { string = string.replace(/"/g, '"'); } return string; }
или самый простой вариант
html = html.replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');
Заметки подобные этой пишу через быструю форму, которую вы видите поверх статьи. Больше для себя. Чтобы в другой раз ну гуглить готовое решение.
А из первого варианта легко можно сделать аналог strip_tags, достаточно поменять местами innerHTML и innerText
function strip_tags( html){ var div = document.createElement('div'); div.innerHTML = html; return div.innerText ; }
Комментарии
А где же "самый простой вариант"
или хотя бы точка в конце предложения (статьи) ?
п.с. статью завершил
PS: не конкретно данный пример, а в целом, при множественных вызовах любой функции в проекте - привычка оборачивать, дабы экономить ресурсы.
Код:
var htmlspecialchars = (function () {
var div = document.createElement("div");
return function (html) {
div.innerText = html;
return div.innerHTML;
}
})();