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

  • bobinire

    bobinire

    24 EYLÜL 2006
  • MkElite

    MkElite

    13 NİSAN 2012
  • wowchick16

    wowchick16

    17 Mart 2007