Bunu yapan küçük bir işlev yazdım. Sadece kaçar "
, &
, <
ve >
(ama genellikle hepsi yine gerekmez var). Daha önce önerilen çözümlerden biraz daha zariftir, çünkü tüm dönüşümü yapmak için sadece birini kullanır .replace()
. ( DÜZENLEME 2: İşlevi daha küçük ve daha düzenli hale getiren kod karmaşıklığı azaltıldı, orijinal kodu merak ediyorsanız bu cevabın sonuna bakın.)
function escapeHtml(text) {
'use strict';
return text.replace(/[\"&<>]/g, function (a) {
return { '"': '"', '&': '&', '<': '<', '>': '>' }[a];
});
}
Bu düz Javascripttir, jQuery kullanılmaz.
Kaçan /
ve '
de
Mklement adlı kullanıcının yorumuna yanıt olarak düzenle .
Yukarıdaki fonksiyon herhangi bir karakteri içerecek şekilde kolaylıkla genişletilebilir. Kaçmak için daha fazla karakter belirtmek için, bunları hem normal ifadedeki karakter sınıfına (yani içinde /[...]/g
) hem de chr
nesneye bir giriş olarak eklemeniz yeterlidir . ( DÜZENLEME 2: Bu işlevi de aynı şekilde kısaltın.)
function escapeHtml(text) {
'use strict';
return text.replace(/[\"&'\/<>]/g, function (a) {
return {
'"': '"', '&': '&', "'": ''',
'/': '/', '<': '<', '>': '>'
}[a];
});
}
'
Kesme işareti için yukarıdaki kullanımın ( '
bunun yerine sembolik varlık kullanılmış olabilir - XML'de tanımlanmıştır, ancak orijinal olarak HTML spesifikasyonuna dahil edilmemiştir ve bu nedenle tüm tarayıcılar tarafından desteklenmeyebilir. Bkz: HTML karakter kodlamaları hakkındaki Wikipedia makalesi. ). Ondalık varlıkları kullanmanın onaltılık kullanmaktan daha yaygın bir şekilde desteklendiğini de hatırlıyorum, ama şimdi bunun için kaynağı bulamıyorum. (Ve onaltılı varlıkları desteklemeyen çok sayıda tarayıcı olamaz.)
Not: HTML'de özel bir anlama sahip olmadıkları ve ihtiyaç duymadıkları için , kaçan karakterlerin listesine /
ve eklemek '
o kadar da kullanışlı değildir. kaçtı edebilirsiniz.
Orijinal escapeHtml
İşlev
EDIT 2: Özgün işlev chr
, .replace()
geri arama için gereken nesneyi saklamak için bir değişken ( ) kullandı . Bu değişken ayrıca onu kapsamak için ekstra anonim bir işleve ihtiyaç duydu, bu da işlevi (gereksiz yere) biraz daha büyük ve daha karmaşık hale getirdi.
var escapeHtml = (function () {
'use strict';
var chr = { '"': '"', '&': '&', '<': '<', '>': '>' };
return function (text) {
return text.replace(/[\"&<>]/g, function (a) { return chr[a]; });
};
}());
İki sürümden hangisinin daha hızlı olduğunu test etmedim. Bunu yaparsanız, buraya bilgi ve bağlantılar eklemekten çekinmeyin.