दिलचस्प पोस्ट
क्या मैं एक ही कैच क्लॉज में कई जावा अपवादों को पकड़ सकता हूं? मैं सी # विंडोज कंसोल ऐप में मौजूदा लाइन को कैसे अपडेट कर सकता हूं? एप्लिकेशन के पथ को प्राप्त करें अनुरोधों का उपयोग कर छवि को कैसे डाउनलोड करें मैं सब्लाइम टेक्स्ट 2 का उपयोग करके HTML कोड को पुन: स्वरूपित कैसे करूं? मैं .NET के लिए MySQL कनेक्टर के लिए एक संदर्भ कैसे जोड़ूं? Urllib2 के साथ प्रॉक्सी एईएस और बेस 64 एन्कोडिंग के साथ एन्क्रिप्ट और डिक्रिप्ट करें सूचना पट्टी में एनीमेशन कस्टम व्यू php localhost से मेल भेजें एक्स स्ट्रॉन्ग एक्सट्रैक्ट की तलाश में है MySQL – अनदेखी करें त्रुटि: डुप्लिकेट प्रविष्टि एक XElement के InnerXml प्राप्त करने का सबसे अच्छा तरीका है? जावा में स्ट्रिंगबइल्डर का उपयोग कब करना PHP – अपलोड करें utf-8 फ़ाइल नाम

जावास्क्रिप्ट में एचटीएमएल विशेष परिवर्तन बराबर है?

जाहिर है, यह मुझे लगता है कि यह होगा की तुलना में खोजने के लिए कठिन है। और यह बहुत आसान है …

क्या जावास्क्रिप्ट में पीएचपी के एचटीएमएल के विशेष फ़ंक्शन हैं? मुझे पता है कि यह अपने आप को लागू करने में काफी आसान है, लेकिन एक निर्मित फ़ंक्शन का उपयोग करते हुए, उपलब्ध होने पर, यह सिर्फ अच्छे है।

PHP से अपरिचित उन लोगों के लिए, <htmltag/> तरह सामान का अनुवाद &lt;htmltag/&gt;

मुझे पता है कि escape() और encodeURI() इस तरह से काम नहीं करते।

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट में एचटीएमएल विशेष परिवर्तन बराबर है?"

आपके समाधान कोड में एक समस्या है – यह केवल प्रत्येक विशेष चरित्र की पहली घटना से बच जाएगी उदाहरण के लिए:

 escapeHtml('Kip\'s <b>evil</b> "test" code\'s here'); Actual: Kip&#039;s &lt;b&gt;evil</b> &quot;test" code's here Expected: Kip&#039;s &lt;b&gt;evil&lt;/b&gt; &quot;test&quot; code&#039;s here 

यहां कोड है जो ठीक से काम करता है:

 function escapeHtml(text) { return text .replace(/&/g, "&amp;") .replace(/</g, "&lt;") .replace(/>/g, "&gt;") .replace(/"/g, "&quot;") .replace(/'/g, "&#039;"); } 

अद्यतन करें

निम्न कोड उपरोक्त समान परिणामों का उत्पादन करेगा, लेकिन यह बेहतर प्रदर्शन करता है, खासकर टेक्स्ट के बड़े ब्लॉक (धन्यवाद jbo5112 ) पर।

 function escapeHtml(text) { var map = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#039;' }; return text.replace(/[&<>"']/g, function(m) { return map[m]; }); } 

वह HTML एन्कोडिंग है ऐसा करने के लिए कोई देशी जावास्क्रिप्ट फ़ंक्शन नहीं है, लेकिन आप Google को कुछ अच्छी तरह से अप करते हैं।

जैसे http://sanzon.wordpress.com/2008/05/01/neat-little-html-encoding-trick-in-javascript/

संपादित करें:
मैंने यही परीक्षण किया है:

 var div = document.createElement('div'); var text = document.createTextNode('<htmltag/>'); div.appendChild(text); console.log(div.innerHTML); 

आउटपुट: &lt;htmltag/&gt;

पढ़ने योग्य: http://bigdingus.com/2007/12/29/html-secaping-in-javascript/

 escapeHTML: (function() { var MAP = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&#34;', "'": '&#39;' }; var repl = function(c) { return MAP[c]; }; return function(s) { return s.replace(/[&<>'"]/g, repl); }; })() 

नोट : केवल एक बार इसे चलाएं और इसे पहले से ही एन्कोडेड स्ट्रिंग पर न चलाएं जैसे &amp; हो जाता है &amp;amp;

JQuery के साथ ऐसा हो सकता है:

 var escapedValue = $('<div/>').text(value).html(); 

संबंधित प्रश्न से jQuery के साथ HTML स्ट्रिंग से बचें

जैसा कि टिप्पणी में उल्लिखित दोहरे उद्धरण और सिंगल उद्धरणों को छोड़ दिया गया है, इस क्रियान्वयन के लिए है। इसका मतलब है कि यदि आप को तत्व विशेषता को एक कच्चे HTML स्ट्रिंग के रूप में बनाने की आवश्यकता है तो यह समाधान नहीं किया जाना चाहिए।

अंडरस्कोर। जेएस इसके लिए फ़ंक्शन प्रदान करता है:

 _.escape(string) 

एचटीएमएल में प्रविष्टि के लिए एक स्ट्रिंग बचता है, प्रतिस्थापित करता है, <,>, ", और 'characters

http://underscorejs.org/#escape

यह एक अंतर्निर्मित जावास्क्रिप्ट फ़ंक्शन नहीं है, लेकिन अगर आप पहले से ही अंडरस्कोर का उपयोग कर रहे हैं तो अपने स्ट्रिंग्स को परिवर्तित करने के लिए यह एक बेहतर विकल्प है, यदि आपका रूपांतरण बहुत बड़ा नहीं है।

फिर भी एक और यह है कि सभी चरित्र मैपिंग पूरी तरह से छोड़ दें और सभी अवांछित पात्रों को अपने संबंधित संख्यात्मक चरित्र संदर्भों में बदल दें, जैसे:

 function escapeHtml(raw) { return raw.replace(/[&<>"']/g, function onReplace(match) { return '&#' + match.charCodeAt(0) + ';'; }); } 

ध्यान दें कि निर्दिष्ट RegEx केवल विशिष्ट वर्णों को संभालता है जो ओपी को बचाना चाहता था, लेकिन प्रसंग पर निर्भर करता है कि बच गए HTML का प्रयोग किया जा रहा है, ये वर्ण पर्याप्त नहीं हो सकते हैं रयान ग्रोव के आलेख एचटीएमएल के लिए और, <,> से बचने के लिए और अधिक है, और " इस विषय पर एक अच्छा पढ़ा है। और आपके संदर्भ के आधार पर, एक्सएक्स इंजेक्शन से बचने के लिए निम्नलिखित रेगएक्स की आवश्यकता हो सकती है:

 var regex = /[&<>"'` !@$%()=+{}[\]]/g 

HTML से बचने के लिए यहां एक फ़ंक्शन है:

 function escapeHtml(str) { var map = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#039;' }; return str.replace(/[&<>"']/g, function(m) {return map[m];}); } 

और व्याख्या करना:

 function decodeHtml(str) { var map = { '&amp;': '&', '&lt;': '<', '&gt;': '>', '&quot;': '"', '&#039;': "'" }; return str.replace(/&amp;|&lt;|&gt;|&quot;|&#039;/g, function(m) {return map[m];}); } 

मैं दो लिंक का सुझाव देता हूं

यह बिल्कुल PHP फ़ंक्शन कार्यान्वित करता है

http://phpjs.org/functions/htmlspecialchars:426

और यह एक भी रिवर्स लागू करता है

http://www.toao.net/32-my-htmlspecialchars-function-for-javascript

 String.prototype.escapeHTML = function() { return this.replace(/&/g, "&amp;") .replace(/</g, "&lt;") .replace(/>/g, "&gt;") .replace(/"/g, "&quot;") .replace(/'/g, "&#039;"); } 

नमूना:

 var toto = "test<br>"; alert(toto.escapeHTML()); 

नोड। जेएस प्रयोक्ताओं के लिए (या उपयोगकर्ता ब्राउज़र में जेड रनटाइम का उपयोग कर रहे हैं), आप जेड के एस्केप फ़ंक्शन का उपयोग कर सकते हैं।

 require('jade').runtime.escape(...); 

अगर कोई अन्य इसे बनाए रखे हुए है, तो यह लिखित रूप में खुद को समझने में कोई मतलब नहीं है। 🙂

 function htmlspecialchars(str) { if (typeof(str) == "string") { str = str.replace(/&/g, "&amp;"); /* must do &amp; first */ str = str.replace(/"/g, "&quot;"); str = str.replace(/'/g, "&#039;"); str = str.replace(/</g, "&lt;"); str = str.replace(/>/g, "&gt;"); } return str; } 

उम्मीद है कि यह अपने प्रदर्शन के कारण दौड़ को जीत लेता है और सबसे ज्यादा जरूरी नहीं है, जिसका प्रयोग जंजीर तर्क से किया गया है। ('&', 'और')। ('<', '<')।

 var mapObj = { '&':"&amp;", '<':"&lt;", '>':"&gt;", '"':"&quot;", '\'':"&#039;" }; var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); function escapeHtml(str) { return str.replace(re, function(matched) { return mapObj[matched.toLowerCase()]; }); } console.log('<script type="text/javascript">alert('Hello World');</script>'); console.log(escapeHtml('<script type="text/javascript">alert('Hello World');</script>')); 

एक उलट:

 function decodeHtml(text) { return text .replace(/&amp;/g, '&') .replace(/&lt;/ , '<') .replace(/&gt;/, '>') .replace(/&quot;/g,'"') .replace(/&#039;/g,"'"); } 

संभावना है कि आपको ऐसे फ़ंक्शन की आवश्यकता नहीं है। चूंकि आपका कोड ब्राउज़र में पहले से है, इसलिए आप HTML को एन्कोडिंग और एन्कोडिंग के बजाय सीधे DOM तक पहुंच सकते हैं, जो कि वास्तव में उपयोग किए जाने वाले ब्राउज़र द्वारा पीछे की तरह डीकोड करना होगा।

textContent पाठ सम्मिलित करने के लिए टेक्स्ट textContent प्रॉपर्टी का उपयोग करें और प्रस्तुत भागने वाले कार्यों में से किसी की तुलना में अधिक तेज़ हो। भीतरी एचटीएमएल के लिए स्थैतिक प्रीकॉन्डेड स्ट्रिंग निर्दिष्ट करने से भी तेज़ ।

दूसरों के लिए data- एट्रिब्यूट सेट करने के लिए वर्गों, dataset को संपादित करने के लिए classList का उपयोग करें।

ये सब आपके लिए बच निकलेगे। अधिक सटीक, कोई बचने की आवश्यकता नहीं है और ** नीचे एन्कोडिंग नहीं किया जाएगा, क्योंकि आप एचटीएमएल के आसपास काम कर रहे हैं, डीओएम का शाब्दिक प्रतिनिधित्व।

 // use existing element var author = 'John "Superman" Doe <john@example.com>'; var el = document.getElementById('first'); el.dataset.author = author; el.textContent = 'Author: '+author; // or create a new element var a = document.createElement('a'); a.classList.add('important'); a.href = '/search?q=term+"exact"&n=50'; a.textContent = 'Search for "exact" term'; document.body.appendChild(a); // actual HTML code console.log(el.outerHTML); console.log(a.outerHTML); 
 .important { color: red; } 
 <div id="first"></div>