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

  • bashirsultani

    bashirsultan

    22 Mart 2010
  • The Exploiteers

    The Exploite

    4 Ocak 2011
  • waterfairy17

    waterfairy17

    9 Aralık 2007