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

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • NikkoNantone

    NikkoNantone

    21 Kasım 2011
  • SRT Photoshop Tutorials

    SRT Photosho

    19 Aralık 2012