मैंने एक छोटा सा फ़ंक्शन लिखा है जो यह करता है। यह केवल निकल जाता है "
, &
, <
और >
(लेकिन आम तौर पर है कि सभी तुम वैसे भी जरूरत है)। यह थोड़ा और अधिक सुरुचिपूर्ण है फिर पहले प्रस्तावित समाधानों में यह सभी रूपांतरण करने के लिए केवल एक .replace()
का उपयोग करता है । ( EDIT 2: फ़ंक्शन को छोटा बनाने और कोड को छोटा करने के कारण कोड जटिलता, यदि आप इस उत्तर के मूल कोड को देखने के बारे में उत्सुक हैं।)
function escapeHtml(text) {
'use strict';
return text.replace(/[\"&<>]/g, function (a) {
return { '"': '"', '&': '&', '<': '<', '>': '>' }[a];
});
}
यह सादा जावास्क्रिप्ट है, कोई jQuery का उपयोग नहीं किया गया है।
बचना /
और '
भी
Mklement की टिप्पणी के जवाब में संपादित करें ।
किसी भी वर्ण को शामिल करने के लिए उपरोक्त फ़ंक्शन को आसानी से विस्तारित किया जा सकता है। बचने के लिए अधिक वर्णों को निर्दिष्ट करने के लिए, बस उन्हें वर्ण वर्ग में दोनों को नियमित अभिव्यक्ति (यानी अंदर /[...]/g
) और chr
ऑब्जेक्ट में एक प्रविष्टि के रूप में डालें । ( EDIT 2: इस फ़ंक्शन को भी छोटा कर दिया, उसी तरह से।)
function escapeHtml(text) {
'use strict';
return text.replace(/[\"&'\/<>]/g, function (a) {
return {
'"': '"', '&': '&', "'": ''',
'/': '/', '<': '<', '>': '>'
}[a];
});
}
'
Apostrophe के लिए उपरोक्त उपयोग पर ध्यान दें ( '
इसके बजाय प्रतीकात्मक इकाई का उपयोग किया जा सकता है - यह XML में परिभाषित किया गया है, लेकिन मूल रूप से HTML कल्पना में शामिल नहीं था और इसलिए सभी ब्राउज़रों द्वारा समर्थित नहीं हो सकता है। देखें: HTML चरित्र एन्कोडिंग पर विकिपीडिया लेख । )। मुझे यह भी याद है कि दशमलव संस्थाओं का उपयोग करना हेक्साडेसिमल का उपयोग करने की तुलना में अधिक व्यापक रूप से समर्थित है, लेकिन मैं अब इसके लिए स्रोत नहीं ढूंढ सकता। (और वहाँ कई ब्राउज़र नहीं हो सकते हैं जो हेक्साडेसिमल संस्थाओं का समर्थन नहीं करता है।)
नोट: भागे हुए पात्रों की सूची में जोड़ना /
और '
यह सब उपयोगी नहीं है, क्योंकि उनका HTML में कोई विशेष अर्थ नहीं है और उन्हें भागने की आवश्यकता नहीं है ।
मूल escapeHtml
कार्य
EDIT 2: मूल फ़ंक्शन chr
ने .replace()
कॉलबैक के लिए आवश्यक ऑब्जेक्ट को संग्रहीत करने के लिए एक चर ( ) का उपयोग किया । इस चर को भी इसे बनाने के लिए एक अतिरिक्त अनाम फ़ंक्शन की आवश्यकता थी, जिससे फ़ंक्शन (अनावश्यक रूप से) थोड़ा बड़ा और अधिक जटिल हो गया।
var escapeHtml = (function () {
'use strict';
var chr = { '"': '"', '&': '&', '<': '<', '>': '>' };
return function (text) {
return text.replace(/[\"&<>]/g, function (a) { return chr[a]; });
};
}());
मैंने यह परीक्षण नहीं किया है कि दोनों में से कौन सा संस्करण तेज़ है। यदि आप करते हैं, तो इसके बारे में जानकारी और लिंक जोड़ने के लिए स्वतंत्र महसूस करें।