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

  • Bach Vlogs

    Bach Vlogs

    18 HAZİRAN 2011
  • PamtheBlamofficial

    PamtheBlamof

    31 Aralık 2010
  • Yanko Kral

    Yanko Kral

    8 HAZİRAN 2006