এইচটিএমএলস্পেশিয়ালচার্স জাভাস্ক্রিপ্টের সমতুল্য?


167

স্পষ্টতই, এটি হিসাবে এটি আমার মনে হবে তার চেয়ে এটি পাওয়া শক্ত। এবং এটি এমনকি খুব সহজ ...

পিএইচপি এর এইচটিএমএল স্পেশালচার্স জাভাস্ক্রিপ্ট মধ্যে নির্মিত সমান কোন ফাংশন আছে? আমি জানি যে এটি নিজে প্রয়োগ করা মোটামুটি সহজ, তবে একটি বিল্ট-ইন ফাংশন ব্যবহার করা, যদি উপলভ্য থাকে তবে এটি কেবল দুর্দান্ত।

পিএইচপি-র সাথে অপরিচিত যারা, এইচটিএমএল স্পেশালচার্স তাদের মতো স্টাফ অনুবাদ <htmltag/>করেন&lt;htmltag/&gt;

আমি এটি জানি escape()এবং encodeURI()এইভাবে কাজ করে না।


পিএইচপি কিছু ভাল সরঞ্জাম পেয়েছে, var_dump, মুদ্রণ_আর, এইচটিএমএল স্পেশালচার্স ইত্যাদি। দুর্ভাগ্যক্রমে আমি সন্দেহ করি যে জেএস এর সাথে একই নয়। জেএস সতর্কতা তাই দরিদ্র। কিছু অপ্রত্যাশিত (এবং সতর্কতা বাক্সে অদৃশ্য) স্ট্রিং আসছে তা দেখার একটি দ্রুত উপায় হ'ল স্ট্রিংটির দৈর্ঘ্যের পরিবর্তে স্ট্রিংয়ের দৈর্ঘ্যটি সতর্ক করা।
মেলসি


স্ট্যাকওভারফ্লো.com /a/ 12034334 / 8804293 দেখুন , এর দুর্দান্ত উত্তর রয়েছে
এলিয়াহ মক

উত্তর:


330

আপনার সমাধান কোডটিতে একটি সমস্যা আছে - এটি কেবলমাত্র প্রতিটি বিশেষ চরিত্রের প্রথম ঘটনাটি এড়াতে পারে। উদাহরণ স্বরূপ:

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]; });
}

5
এই ফাংশনটি সম্পর্কে সুন্দর জিনিসটি এটি
নোড.জেজেসে

6
একটি একক প্রতিস্থাপন এবং ম্যাপিং ফাংশনটি ব্যবহার করা আরও দ্রুত এবং একক প্রতিস্থাপন স্কেলগুলি আরও ভাল। ( jsperf.com/escape-html-spected-chars/11 )
jbo5112

1
@ jbo5112 ভাল পয়েন্ট, আমি বুঝতে পারিনি যে জেএস প্রতিস্থাপনের জন্য কলব্যাকের অনুমতি দিয়েছে। যদিও এই কোডটি বোঝা সহজ, এবং আমি সন্দেহ করি যে এসকিএইচটিএমএল () এর বাইরে কয়েক মিলি সেকেন্ড শেভ করা একটি পার্থক্য আনতে চলেছে যদি আপনি কোনও কারণে একাধিকবার কয়েকবার কল না করে থাকেন।
কিপ

এটি পাঠ্যগুলিতে ইউআরএলগুলি বিকৃত করবে যা এটি অটলিংকার.জেএস এর মতো প্লাগইনগুলির জন্য তাদের ব্যবহারের অযোগ্য করে তোলে । এটির কাছে যাওয়ার উপায় কী আছে?
রাদেক মাটিজ

4
@ রাদেকম্যাটজ এমনকি এমন ক্ষেত্রে এটি এইচএমএল ডকুমেন্টে ব্যবহৃত হওয়ার সময় উভয় এম্পারস্যান্ডকে এনকোড করার জন্য পুরোপুরি বৈধ (পছন্দনীয় আমি তর্ক করব)। আমি এখনও এটি প্লাগিন সহ একটি বাগ বিবেচনা করব।
20:48

31

এটি এইচটিএমএল এনকোডিং। এটি করার মতো কোনও নেটিভ জাভাস্ক্রিপ্ট ফাংশন নেই, তবে আপনি গুগল করতে পারেন এবং কিছু সুন্দরভাবে সম্পন্ন করতে পারেন।

যেমন 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;


খুব খারাপ, আমাকে তখন একটি কাস্টম ফাংশন ব্যবহার করতে হবে।
বার্ট ভ্যান হিউকেলোম

আমি আমার পোস্টে যে লিঙ্কটি অন্তর্ভুক্ত করেছি তাতে আপনি পদ্ধতিটি চেষ্টা করতে পারেন। সত্যই সুন্দর ঝরঝরে ধারণা।
ঠিক

@ ওকেউ: ঠিক আছে, প্রথমে আপনি এটির সাথে লিঙ্ক করেছেন: yuki-onna.co.uk/html/encode.html যা ঠিক কী encodeURIComponentকরে এবং ওপি যা বলেছিল তা নয়। সুতরাং আপনি কি সম্পাদনা করতে পারেন? আমি আমার -1 পূর্বাবস্থায় ফিরে আসতে পারি না।
ক্রিসেন্ট টাটকা

হ্যাঁ, এই পৃষ্ঠার কোডটি যৌক্তিক দেখাচ্ছে তবে আমি এটি পরীক্ষা করে দেখিনি। নতুন লিঙ্কটি যদিও কাজ করে, আমি নিজে এটি যাচাই করেছি। কিছুক্ষণ আগে পোস্টটি ইতিমধ্যে আপডেট করেছি।
ঠিক

@ বিউসিয়েলব্লিউ: না। কেবলমাত্র নোডগুলি তৈরি করা হয় এটি একটি একক divউপাদান এবং একটি পাঠ্য নোড। Im <img src = bogus onerror = সতর্কতা (1337)> text সহ পাঠ্য নোড তৈরি করা কেবল একটি imgউপাদান নয়, কেবল একটি পাঠ্য নোড তৈরি করবে ।
টিম ডাউন

26

একটি পাঠ্য মূল্য: http://bigdingus.com/2007/12/29/html-escaping-in- জাভাস্ক্রিপ্ট /

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;


3
এটি গ্রহণযোগ্য এবং সর্বাধিক ভোট দেওয়া উত্তর হওয়া উচিত। আমি নিশ্চিত না কেন এর কোনও ভোট নেই। এটি দীর্ঘ (326 কেবি গুগল অনুসন্ধান ফলাফল) এবং জেএসপিফেরিতে সংক্ষিপ্ত ইনপুট স্ট্রিং ( jsperf.com/escape-html- স্পেশাল- chars/ 11 ) এর সাথে দ্রুততম হিসাবে বেঞ্চমার্ক করছে । দয়া করে এটিকে ভোট দিন।
jbo5112

যে উত্তরটি সবচেয়ে বেশি ভোট পেয়েছে তার মধ্যে এই পার্থক্য কী? অতিরিক্ত অভ্যন্তরীণ ফাংশন কেন ?. একটি ব্যাখ্যা ব্যবহারকারীদের আরও ভালভাবে বুঝতে সহায়তা করতে পারে
কোসেম

19

JQuery এর সাথে এটি এমন হতে পারে:

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

সম্পর্কিত প্রশ্ন থেকে jQuery এর সাথে এইচটিএমএল স্ট্রিংগুলি ছড়িয়ে দেওয়া

মন্তব্যে উল্লিখিত হিসাবে ডাবল কোট এবং একক উক্তিগুলি এই বাস্তবায়নের জন্য যেমন রয়েছে তেমন বাকি রয়েছে। এর অর্থ আপনি যদি কোনও কাঁচা এইচটিএমএল স্ট্রিং হিসাবে উপাদান বৈশিষ্ট্য তৈরি করতে চান তবে এই সমাধানটি ব্যবহার করা উচিত নয়।


2
এর কোনও ওভারহেড থাকলে কোনও ধারণা - ডিওমে একটি ডামি অবজেক্ট যুক্ত করা?
কিপ

এবং অন্য কোনও সুবিধা আছে (বলুন, যদি আপনার ইউনিকোড অক্ষর বা কিছু থাকে)?
কিপ

4
আমি এর সাথে কিছু খুঁজে পেয়েছি: ডাবল উদ্ধৃতি এবং একক উদ্ধৃতি যেমন রয়েছে তেমন বাকি আছে। যদি আপনি এটি কোনও অ্যাট্রিবিউট মানতে ব্যবহার করতে চান তবে এটি সমস্যাযুক্ত করে।
কিপ

1
পাঠ্যের ছোট অংশগুলির জন্য, প্রতিস্থাপনের সমস্ত চালানো যতক্ষণ 30x সময় নেয়। যদিও এটি স্কেল আরও ভাল করে। গুগল অনুসন্ধান ফলাফল পৃষ্ঠার (326 কেবি) হিসাবে বিশাল কিছু দিয়ে, এটি প্রতিস্থাপনের চেয়ে 25-30% দ্রুত বা সরাসরি জাভাস্ক্রিপ্টে এটি করার চেয়ে দ্রুততর। যাইহোক, তারা সমস্ত ধারাবাহিকভাবে একটি একক প্রতিস্থাপন এবং একটি ম্যাপিং ফাংশন হারাবে।
jbo5112

4
লোকেরা এই উত্তরে কীভাবে ভোট দেয়: উত্তরে জিকোয়ারি রয়েছে: +1 - একক এবং ডাবল উদ্ধৃতিগুলি এড়ায় না: উম্মম্মম .. (মাথা চুলকানো) .. +1। <!-- Caps rage begin --> এই উত্তরটির নেতিবাচক স্কোর হওয়া উচিত কারণ এটি "এইচটিএমএল স্পেশালচার্স সমতুল্য" প্রশ্নের উত্তরটি আসেনি। <!-- Caps rage end -->এটি করে নয়-পালাবার-কোট-যীশু-Christ-এবং-অন্যান্য-দেবতার। ওএমজি আপনি লোকেরা।
শার্কি

19

এইচটিএমএল এড়াতে এখানে একটি ফাংশন রয়েছে:

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];});
}

6

অ্যান্ডস্কোর.জেএস এর জন্য একটি ফাংশন সরবরাহ করে:

_.escape(string)

এইচটিএমএলে সন্নিবেশের জন্য একটি স্ট্রিং এড়িয়ে যায়, & & <,>, "এবং 'অক্ষর প্রতিস্থাপন করুন।

http://underscorejs.org/#escape

এটি কোনও অন্তর্নিহিত জাভাস্ক্রিপ্ট ফাংশন নয়, তবে আপনি যদি ইতিমধ্যে ইন্ডস্কোর ব্যবহার করে থাকেন তবে রূপান্তর করার জন্য আপনার স্ট্রিংগুলি খুব বড় না হলে এটি আপনার নিজের ফাংশনটি লেখার চেয়ে ভাল বিকল্প।


5

এরপরে আরেকটি বিষয় হ'ল সমস্ত চরিত্রকে পুরোপুরি ম্যাপিংয়ে রেখে দেওয়া এবং পরিবর্তে সমস্ত অবাঞ্ছিত চরিত্রগুলিকে তাদের নিজ নিজ বর্ণীয় রেফারেন্সের রেফারেন্সে রূপান্তর করা, যেমন:

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

দ্রষ্টব্য যে নির্দিষ্ট রেজিএক্স কেবলমাত্র নির্দিষ্ট অক্ষরগুলি পরিচালনা করে যা ওপি পালাতে চেয়েছিল তবে, পালানো এইচটিএমএল যে প্রসঙ্গে চলেছে তার উপর নির্ভর করে এই অক্ষরগুলি পর্যাপ্ত নাও হতে পারে। রায়ান গ্রোভের নিবন্ধটি &, <,> এর চেয়ে এইচটিএমএল পলায়নের আরও অনেক কিছুই রয়েছে এবং " এই বিষয়টিতে একটি ভাল পড়া।

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

3
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());

3

সম্ভাবনা হ'ল আপনার এমন কোনও ফাংশনের দরকার নেই। যেহেতু আপনার কোডটি ইতিমধ্যে ব্রাউজার * এ রয়েছে, আপনি HTML তৈরি করতে এবং এনকোডিংয়ের পরিবর্তে ডমকে সরাসরি অ্যাক্সেস করতে পারেন যা প্রকৃতপক্ষে ব্যবহার করতে ব্রাউজারের পিছনে ডিকোড করতে হবে।

ব্যবহার innerTextনিরাপদে এবং উপস্থাপিত যে কোনও এস্কেপ ফাংশন ব্যবহারের চেয়ে দ্রুত গতিতে ডিওমে সরল পাঠ্য সন্নিবেশ করানোর জন্য সম্পত্তিটি । স্ট্যাটিক প্রিনকোডড স্ট্রিংকে নির্ধারণের চেয়ে আরও দ্রুতinnerHTML

ব্যবহার classList শ্রেণীর সম্পাদনায় যান, datasetসেটে data-গুণাবলী এবং setAttributeঅন্যদের জন্য।

এই সমস্ত আপনার জন্য পালানো পরিচালনা করবে। আরও স্পষ্টভাবে, কোনও পালানোর দরকার নেই এবং ** এর নীচে কোনও এনকোডিং করা হবে না, যেহেতু আপনি এইচটিএমএল জুড়ে কাজ করছেন, এটি ডিওএমের পাঠ্য উপস্থাপনা।

// 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>

* এই উত্তরটি সার্ভার-সাইড জাভাস্ক্রিপ্ট ব্যবহারকারীদের জন্য নয় (নোড.জেএস, ইত্যাদি )

** যদি না আপনি স্পষ্টভাবে পরে এটিকে প্রকৃত এইচটিএমএলে রূপান্তর করেন। উদাহরণস্বরূপ অ্যাক্সেস করে innerHTML- আপনি যখন $('<div/>').text(value).html();অন্য উত্তরে প্রস্তাবিত হন তখন এটি ঘটে । সুতরাং যদি আপনার চূড়ান্ত লক্ষ্যটি ডকুমেন্টে কিছু তথ্য সন্নিবেশ করানো হয় তবে এটি করে আপনি দুবার কাজটি করবেন। এছাড়াও আপনি দেখতে পাচ্ছেন যে ফলাফলযুক্ত এইচটিএমএলটিতে সমস্ত কিছুই এনকোড করা হয় না, বৈধ হওয়ার জন্য কেবল সর্বনিম্ন যেটি প্রয়োজনীয়। এটি প্রাসঙ্গিকভাবে নির্ভর করে সম্পন্ন করা হয়, এজন্যই এই jQuery পদ্ধতিটি উদ্ধৃতিগুলি এনকোড করে না এবং তাই সাধারণ উদ্দেশ্য এসকর্ট হিসাবে ব্যবহার করা উচিত নয়। আপনি যখন কোনও অ্যাট্রিবিউটর মানটির জায়গায় অবিশ্বস্ত বা কোটযুক্ত ডেটা সহ স্ট্রিং হিসাবে এইচটিএমএল তৈরি করেন তখন উদ্ধৃতিগুলি রক্ষা দরকার। আপনি যদি ডিওএম এপিআই ব্যবহার করেন তবে আপনাকে কোনওরকম পালানোর বিষয়ে চিন্তা করতে হবে না।


এর জন্য ধন্যবাদ! আমি এত সহজ সমাধান সন্ধান করতে দীর্ঘ সময় ব্যয় করেছি। এক গুরুত্বপূর্ণ বিষয় আমি জানতে পেরেছি যে আপনার লেখা নতুন লাইন থাকে, তাহলে আপনি করতে হবে হয় তাদের এইচটিএমএল লাইন ব্রেক প্রতিস্থাপন (যেমন কিছু el.textContent = str; el.innerHTML = el.innerHTML.replace(/\n/g, '<br>')), অথবা সিএসএস সেট white-spaceকরার সম্পত্তি preবাpre-wrap
stellatedHexahedron

@ স্টলেলেটেডহেক্সাহেড্রন, এই বিষয়টি উত্থাপনের জন্য ধন্যবাদ thanks innerTextপরিবর্তে প্রস্তাব দেওয়ার জন্য আমি আমার উত্তর পরিবর্তন করেছি textContent। সম্পত্তিটি পড়ার সময় কিছুটা ধীর এবং কিছু অন্যান্য পার্থক্য থাকলেও এটি আরও স্বজ্ঞাত যে এটি <br>অর্পণ করার সময় এটি স্বয়ংক্রিয়ভাবে প্রতিস্থাপনটি করে।
ব্যবহারকারী

2

নোড.জেএস ব্যবহারকারীদের (বা ব্রাউজারে জেড রানটাইম ব্যবহারকারী ব্যবহারকারীদের) জন্য, আপনি জেডের পালানোর ফাংশনটি ব্যবহার করতে পারেন।

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

অন্য কেউ এটি বজায় রাখলে নিজেই এটি লেখার কোনও বুদ্ধি নেই। :)


1

আমি Okw এর উত্তরে কিছুটা বিশদভাবে বলছি।

আপনি এটির জন্য ব্রাউজারের ডিওএম ফাংশন ব্যবহার করতে পারেন।

var utils = {
    dummy: document.createElement('div'),
    escapeHTML: function(s) {
        this.dummy.textContent = s
        return this.dummy.innerHTML
    }
}

utils.escapeHTML('<escapeThis>&')

এই ফিরে আসে &lt;escapeThis&gt;&amp;

এটি createElementএকটি অদৃশ্য উপাদান তৈরি করতে স্ট্যান্ডার্ড ফাংশনটি ব্যবহার করে , তারপরে textContentকোনও স্ট্রিংটিকে তার সামগ্রী হিসাবে সেট করতে এবং তারপরে innerHTMLHTML এর উপস্থাপনায় সামগ্রীটি পেতে ফাংশনটি ব্যবহার করে ।


0
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;
 }

0

আশা করি এটি তার পারফরম্যান্সের কারণে দৌড়ে জিতবে এবং সবচেয়ে গুরুত্বপূর্ণ .replace ('&', '&') ব্যবহার করে শৃঙ্খলিত যুক্তি নয় not প্রতিস্থাপন ('<', '<') ...

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>'));

0

বিপরীত একটি:

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

সত্তা কীভাবে ডিকোড করতে হয় তা প্রশ্ন করছে না। এটি প্রশ্ন যা জিজ্ঞাসা করছে তার বিপরীত কাজ করে।
কোয়ান্টিন

এটি কেবল প্রথম স্ট্রান্স &lt;এবং &gr;একটি স্ট্রিংয়ে প্রতিস্থাপন করবে ।
কোয়ান্টিন

এটি কেবলমাত্র পাঁচটি অক্ষরকে ডিকোড করবে যা (ইউনিকোড নথির বাইরে) অবশ্যই পালাতে হবে, এটি যেগুলি পালাতে পারে তার ডিকোড করবে না ।
কোয়ান্টিন

এটি যখন আধা-কোলন alচ্ছিক হয় তার জন্য বিধিগুলি আমলে নেয় না।
কোয়ান্টিন

যদি এইচটিএমএল বলে To write a greater than sign in HTML type &amp;gt;>&gt;
কোয়ান্টিন

0

ওডাব্লুএএসপি সুপারিশ করে যে "[ই] বর্ণানুক্রমিক অক্ষরের জন্য বাদে, [আপনার] এএসসিআইআই মান সহ সমস্ত অক্ষরকে 256 এর চেয়ে কম সহকারে পালাতে হবে&#xHH; []] বৈশিষ্ট্যের বাইরে যাওয়া রোধ করার জন্য বা [নাম] বৈশিষ্ট্যের বাইরে যাওয়া রোধ করতে "named

সুতরাং এখানে একটি ফাংশন এটি করে যা ব্যবহারের উদাহরণ সহ:

function escapeHTML(unsafe) {
  return unsafe.replace(
    /[\u0000-\u002F]|[\u003A-\u0040]|[\u005B-\u00FF]/g,
    c => '&#' + ('000' + c.charCodeAt(0)).substr(-4, 4) + ';'
  )
}
document.querySelector('div').innerHTML =
  '<span class=' +
  escapeHTML('this should break it! " | / % * + , - / ; < = > ^') +
  '>' +
  escapeHTML('<script>alert("inspect the attributes")\u003C/script>') +
  '</span>'
<div></div>


-1
function htmlEscape(str){
    return str.replace(/[&<>'"]/g,x=>'&#'+x.charCodeAt(0)+';')
}

এই সমাধানটি অক্ষরের সংখ্যাসূচক কোড ব্যবহার করে, উদাহরণস্বরূপ <দ্বারা প্রতিস্থাপন করা হয়&#60;

যদিও এর কার্য সম্পাদন মানচিত্র ব্যবহার করে সমাধানের চেয়ে কিছুটা খারাপ , এর সুবিধাগুলি রয়েছে:

  • একটি লাইব্রেরি বা ডিওএম এর উপর নির্ভরশীল নয়
  • স্মরণ রাখা খুব সহজ (আপনার 5 টি এইচটিএমএল এস্কেপ অক্ষর মুখস্ত করার দরকার নেই)
  • ছোট কোড
  • যুক্তিসঙ্গতভাবে দ্রুত (এটি এখনও 5 টি চেইন প্রতিস্থাপনের চেয়ে দ্রুত)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.