Po przesłaniu / wysyłaniu danych na serwerze, muszę htmlenodode jego znaki (odpowiednie), ponieważ wyłączanie sprawdzania wejścia przez ustawienie validationRequest = false jest , a nie a dobra praktyka.

Wszystkie rozwiązania są wreszcie wreszcie Wymiana znaków w ciągu:

To jest to, co napisałem.

function htmlEncode(str) {
    str = str.replace(/\&/g, "&");
    str = str.replace(/\</g, "&lt;");
    str = str.replace(/\>/g, "&gt;");
    str = str.replace(/ /g, "&nbsp;");
    return str;
}

Ale uspokajająco Regex może zostać zastąpiony czymś znacznie szybszym (nie zrozum mnie źle - kocham Regex).

Również praca z indeksami + podsągi wydaje się marnotrawne.

Jaki jest najszybszy sposób na to?

7
Royi Namir 24 wrzesień 2012, 13:16

3 odpowiedzi

Najlepsza odpowiedź
function htmlEncode(str) {
    return String(str)
            .replace(/&/g, '&amp;')
            .replace(/"/g, '&quot;')
            .replace(/'/g, '&#39;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;');
}

JSPERF Tests Pokaż Ta metoda jest szybka i możliwa najszybsza opcja, jeśli jesteś w Najnowsza wersja przeglądarki.

Innym sposobem na to

function htmlEncode(value){
  return $('<div/>').text(value).html();
}

function htmlDecode(value){
  return $('<div/>').html(value).text();
}
13
Sender 24 wrzesień 2012, 09:20
function htmlEncode(value){
    if (value) {
        return jQuery('<div />').text(value).html();
    } else {
        return '';
    }
}

function htmlDecode(value) {
    if (value) {
        return $('<div />').html(value).text();
    } else {
        return '';
    }
}
0
Champ 24 wrzesień 2012, 09:23

Jeśli tylko kodujesz podmioty HTML, możesz spróbować:

function htmlEncode(str) {
    var d = document.createElement('b');
    d.innerText = str;
    return d.innerHTML;
}

W ten sposób nie jest najszybszy . Ten test wskazuje, że REGEXP jest szybszy: http://jsperf.com/encodehtml

Jednak różnica wydaje się być mniejsza, tym bardziej spożywasz HTML.

Metoda INNERTEXT wydaje się bardziej wiarygodna, ponieważ wykorzysta natywne tabele konwersji przeglądarki dla podmiotów. Z REGEXP, zawsze istnieje szansa, że brakowało czegoś i jako niektóre Poprzednie odpowiedzi wskazują, konsumowanie HTML za pomocą REGEXP nie zawsze optymalny.

0
Community 23 maj 2017, 10:30