SORU
31 Mart 2011, PERŞEMBE


Hızlı HTML olarak HTML etiketleri kaçış yöntemi varlıklar?

Bir işin içeren bir Chrome uzantısı yazıyorumçokaşağıdaki iş tanımı: dezenfektan dizeleriolabilirHTML etiketleri, <, > & 5*,* 6 ** dönüştürme ve &, sırasıyla içerir.

(Diğer bir deyişle, PHP gibi aynı htmlspecialchars(str, ENT_NOQUOTES) – çift-tırnak karakterleri dönüştürmek için gerçek bir ihtiyaç olduğunu sanmıyorum.)

Bu şimdiye kadar bulduğum en hızlı fonksiyonudur:

function safe_tags(str) {
    return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>') ;
}

Ama tek seferde bir kaç bin dizeleri çalıştırmak zorunda kaldığımda hala büyük bir boşluk var.

Kimse bu konuda geliştirebilir mi? Eğer bu bir fark yaratır mı çoğunlukla dizeleri için 10 ila 150 karakter.

(Bir büyüktür işareti kodlama rahatsız ettiğim için – bu gerçek bir tehlike olurdu orada değildi kaldım fikir?)

CEVAP
31 Mart 2011, PERŞEMBE


Değişimi gerçekleştirmek için bir geri arama işlevini geçen deneyebilirsiniz:

var tagsToReplace = {
    '&': '&',
    '<': '<',
    '>': '>'
};

function replaceTag(tag) {
    return tagsToReplace[tag] || tag;
}

function safe_tags_replace(str) {
    return str.replace(/[&<>]/g, replaceTag);
}

Burada performans testi: sürekli replace işlevini çağıran ve DOM yöntemi Dmitrij tarafından önerilen kullanarak karşılaştırmak için http://jsperf.com/encode-html-entities.

Sizin yol kolay görünüyor

Neden lazım?

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • campos9896

    campos9896

    24 Mart 2012
  • Curso Online Gratuito

    Curso Online

    4 Aralık 2011
  • THE RED DRAGON

    THE RED DRAG

    6 ŞUBAT 2009