কীভাবে jQuery ব্যবহার করে এইচটিএমএল সত্তা ডিকোড করবেন?


334

এইচটিএমএল সত্তাকে একটি স্ট্রিংয়ে ডিকোড করতে আমি কীভাবে jQuery ব্যবহার করব?


প্রযুক্তির অকাল পছন্দ (jQuery) সুরক্ষা সমস্যার সাথে উত্তরগুলি আমন্ত্রণ জানিয়েছে। এটি স্ট্যাকওভারফ্লো / প্রশ্নগুলি / ১৯১২৫০১/২ এর সদৃশ হিসাবে বন্ধ করা ভাল ।
ও্লাদিমির প্যালান্ট

উত্তর:


437

সুরক্ষা দ্রষ্টব্য: এই উত্তরটি (নীচে তার মূল ফর্মটিতে সংরক্ষিত) ব্যবহার করা আপনার অ্যাপ্লিকেশনটিতে একটি এক্সএসএস দুর্বলতার পরিচয় দিতে পারে । আপনার এই উত্তরটি ব্যবহার করা উচিত নয়। এই উত্তরের দুর্বলতার ব্যাখ্যার জন্য লুকাস্কারোর জবাবটি পড়ুন এবং সেই উত্তরটি বা মার্ক আমেরির উত্তর থেকে যে কোনওটি ব্যবহার করুন ।

আসলে, চেষ্টা করুন

var decoded = $("<div/>").html(encodedStr).text();

175
অবিশ্বস্ত ইনপুট দিয়ে এটি করবেন না । নোডটি ডিওএমের সাথে সংযুক্ত না থাকলেও অনেকগুলি ব্রাউজার চিত্র এবং আগুন সম্পর্কিত ইভেন্টগুলি লোড করে। চালানোর চেষ্টা করুন $("<div/>").html('<img src="http://www.google.com/images/logos/ps_logo2.png" onload=alert(1337)>')। ফায়ারফক্স বা সাফারিতে এটি সতর্কতা ছড়িয়ে দেয়।
মাইক স্যামুয়েল

@ মাইক, সুতরাং পরিবর্তে আপনি কি সুপারিশ করবেন? আপনার প্রতিস্থাপন () -এর উত্তরটি ভাল নয় আপনি কী
বদলাচ্ছেন

7
@ ইকিস, সত্ত্বাগুলি ডিকোড করার চেষ্টা করার আগে আপনাকে ট্যাগগুলি সরিয়ে ফেলতে হবে। str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/g, "")বা অনুরূপ কিছু।
মাইক স্যামুয়েল

2
ইনপুট থেকে সর্বাধিক এইচটিএমএল ট্যাগগুলি (মাইকের সৌজন্যে) কেটে ফেলা একটি আরও ভাল বাস্তবায়ন আমার অনুরূপ প্রশ্নের উত্তরে । এটিতে jQuery এর ওভারহেড নেই তাই এটি অন্যান্য পরিবেশের জন্য উপযুক্ত।
রবার্ট কে

6
@ মাইকেল স্টাম আপনার সম্পাদনা এখানে মাইক স্যামুয়েল এর মন্তব্য এবং পরবর্তী সর্বোচ্চ ভোট প্রাপ্ত উত্তর উভয়কেই অকার্যকর করে দিয়েছে এবং সমস্ত jQuery সংস্করণের জন্য XSS দুর্বলতাটি ঠিক না করেই করেছে (নীচের উত্তরে বর্ণিত হিসাবে) এই উত্তরে সুরক্ষা সতর্কতা যুক্ত করা যুক্তিসঙ্গত হবে (এবং আমি এটি করতে যাচ্ছি); সুরক্ষা গর্তটি ঠিক করতে ব্যর্থ হওয়ার সাথে সাথে এই পৃষ্ঠায় অন্যান্য আলোচনার বিব্রতকর বক্তব্য রাখার বিষয়টি অবশ্যই স্পষ্ট নয়!
মার্ক অ্যামেরি

211

কোন jQuery ছাড়া:

function decodeEntities(encodedString) {
  var textArea = document.createElement('textarea');
  textArea.innerHTML = encodedString;
  return textArea.value;
}

console.log(decodeEntities('1 &amp; 2')); // '1 & 2'

এটি গৃহীত উত্তরের মতো একইভাবে কাজ করে তবে অবিশ্বস্ত ব্যবহারকারী ইনপুট সহ এটি নিরাপদ।


একই পদ্ধতিতে সুরক্ষা সম্পর্কিত সমস্যা

মাইক স্যামুয়েল দ্বারা উল্লিখিত হিসাবে , অবিশ্বস্ত ব্যবহারকারী ইনপুটটির <div>পরিবর্তে <textarea>এটি করা একটি এক্সএসএস দুর্বলতা, এমনকি যদি ডোমে <div>কখনও যুক্ত না হয়:

function decodeEntities(encodedString) {
  var div = document.createElement('div');
  div.innerHTML = encodedString;
  return div.textContent;
}

// Shows an alert
decodeEntities('<img src="nonexistent_image" onerror="alert(1337)">')

তবে, এই আক্রমণটি কোনওটির বিরুদ্ধে সম্ভব নয় <textarea>কারণ কোনও HTML উপাদান নেই যা এর সামগ্রীতে অনুমোদিত <textarea>। ফলস্বরূপ, 'এনকোডড' স্ট্রিংটিতে এখনও উপস্থিত যে কোনও এইচটিএমএল ট্যাগ ব্রাউজার দ্বারা স্বয়ংক্রিয়ভাবে সত্তা-এনকোড হবে।

function decodeEntities(encodedString) {
    var textArea = document.createElement('textarea');
    textArea.innerHTML = encodedString;
    return textArea.value;
}

// Safe, and returns the correct answer
console.log(decodeEntities('<img src="nonexistent_image" onerror="alert(1337)">'))

সতর্কবাণী : এই jQuery এর মধ্যে ব্যবহার করছেন .html()এবং .val()পরিবর্তে ব্যবহার করার পদ্ধতি .innerHTMLএবং .valueএছাড়াও jQuery এর কিছু সংস্করণের জন্য অনিরাপদ * হয়, যখন একটি ব্যবহার করা বেশিtextarea । এটি কারণ jQuery এর পুরানো সংস্করণগুলি ইচ্ছাকৃতভাবে এবং স্পষ্টভাবে স্ট্রিংয়ের মধ্যে থাকা স্ক্রিপ্টগুলিতে মূল্যায়ন করেছিল .html()। সুতরাং এই জাতীয় কোড jQuery 1.8 এ একটি সতর্কতা দেখায়:

//<!-- CDATA
// Shows alert
$("<textarea>")
.html("<script>alert(1337);</script>")
.text();

//-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

* এই দুর্বলতা ধরার জন্য ইরু পেনম্যানকে ধন্যবাদ ।


6
পাঠ্যমূল্যের মান বের করার পরে এটি ধ্বংস করা ভাল ধারণা হতে পারে:decodedString = textArea.value; textArea.remove(); return decodedString;
ওয়ার্নার

2
অথবা কেবলমাত্র জাভাস্ক্রিপ্টের সংস্করণটি মুছে ফেলা সমর্থন করে ():if ('remove' in Element.prototype) textArea.remove();
ওয়ার্নার

6
@ ওয়ার্নার ফাংশনটি শেষ হওয়ার সাথে সাথে এর কোনও উল্লেখের মতো আরও কোনও ভেরিয়েবল থাকবে না যাতে এটি আবর্জনা সংগ্রহকারী দ্বারা স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে ।
ব্যবহারকারী 2428118

আমি এটি একটি বোতামের ক্লিকের কোড-পেছন থেকে .NET এর সাথে সংমিশ্রণে ব্যবহার করছি এবং কোনও কারণে স্বীকৃত উত্তরটি একটি পোস্টব্যাকের কারণ হয়েছে। এই উত্তরটি দেয় নি, সুতরাং এটি আমার পক্ষে সেরা উত্তর। ধন্যবাদ!
স্নিলার

@ স্নিলার $("<div />").html(string).text() প্রদত্ত স্ট্রিংগুলিতে যে কোনও জাভাস্ক্রিপ্ট কার্যকর করবেন , যা আমার সন্দেহ হয় যা আপনার সমস্যার কারণ হয়েছিল। গৃহীত উত্তরটি এইটিতে আপডেট করা উচিত।
jboman

80

মাইক স্যামুয়েল যেমন বলেছেন, এইচটিএমএল সত্তাটি অনিরাপদ হিসাবে ডিকোড করতে jQuery.html ()। পাঠ্য () ব্যবহার করবেন না।

পরিবর্তে, মত একটি টেমপ্লেট রেন্ডারার ব্যবহার Mustache.js বা decodeEntities @ VyvIT এর মন্তব্য থেকে।

অ্যান্ডসোর.জেএস ইউটিলিটি-বেল্ট লাইব্রেরি escapeএবং unescapeপদ্ধতিগুলি নিয়ে আসে তবে তারা ব্যবহারকারীর ইনপুট জন্য নিরাপদ নয়:

_.escape (STRING)

_.unescape (STRING)


2
এটি আসলে আরও বেশি উপায়ে প্রাপ্য! অবশ্যই আমার পছন্দসই সমাধান। তারা unescapeএতক্ষণে ডক্সে অন্তর্ভুক্ত করেছে , বিটিডাব্লু।
প্রাণঘাতী-গিটার

5
_.unescape("&#39;")কেবল "& # 39;" এ ফলাফল পরিবর্তে একক উদ্ধৃতি। আমি কি অনুপস্থিত এমন কিছু আছে বা দেখায় যেমন এইচটিএমএল সত্তা কোডগুলিতে আন্ডারস্কোর করা যায় না: w3schools.com/tags/ref_entities.asp
জেসন অ্যাকসেলসন

6
গিথুব বাগটি "উইল ফিক্স" হিসাবে বন্ধ ছিল; এর অর্থ এই সমাধানটি কাজ করে না এবং কাজ করবে না।
ইগর চুবিন

3
আপনি বলেছেন যে অ্যান্ডস্কোরের " escapeএবং unescapeপদ্ধতিগুলি ... ব্যবহারকারী ইনপুট জন্য নিরাপদ নয়" । আপনি এই দ্বারা কি বোঝাতে চেয়েছেন? এটি আমার কাছে আজেবাজে লাগছে, তবে সম্ভবত আমি কিছু মিস করছি - আপনি কি স্পষ্ট করে বলতে পারেন?
মার্ক আমেরিকা

2
@ ভিভিট ট্রাইড _.unescape("&lt;img src=fake onerror=alert('boo!')&gt;")(ক্রোম / এফএফ / আইই মধ্যে)। তবে এটি কোনও সতর্কতা দেখায়নি । এটি কনসোলে চেষ্টা করার পাশাপাশি এটি আমার জেএস ফাইলেও রেখেছিল। একই ফলাফল।
বিবেক আটলিতে

28

আমি মনে করি আপনি পাঠ্য এবং এইচটিএমএল পদ্ধতি গুলিয়ে ফেলছেন। এই উদাহরণটি দেখুন, আপনি যদি কোনও উপাদানের অভ্যন্তরীণ এইচটিএমএলটিকে পাঠ্য হিসাবে ব্যবহার করেন তবে আপনি ডিকোড হওয়া এইচটিএমএল ট্যাগগুলি পাবেন (দ্বিতীয় বোতাম)। আপনি যদি এইচটিএমএল হিসাবে ব্যবহার করেন তবে আপনি এইচটিএমএল বিন্যাসিত ভিউ পাবেন (প্রথম বোতাম)।

<div id="myDiv">
    here is a <b>HTML</b> content.
</div>
<br />
<input value="Write as HTML" type="button" onclick="javascript:$('#resultDiv').html($('#myDiv').html());" />
&nbsp;&nbsp;
<input value="Write as Text" type="button" onclick="javascript:$('#resultDiv').text($('#myDiv').html());" />
<br /><br />
<div id="resultDiv">
    Results here !
</div>

প্রথম বোতামটি লিখেছেন: এখানে একটি HTML সামগ্রী রয়েছে।

দ্বিতীয় বোতামটি লিখেছেন: এখানে একটি <B> এইচটিএমএল </ b> সামগ্রী রয়েছে।

যাইহোক, আপনি jQuery প্লাগইন -এ আমি খুঁজে পেয়েছি এমন একটি প্লাগ-ইন দেখতে পাচ্ছেন - এইচটিএমএল ডিকোড এবং এনকোড যা এইচটিএমএল স্ট্রিংগুলি এনকোড এবং ডিকোড করে।


26

প্রশ্নটি 'jQuery সহ' দ্বারা সীমাবদ্ধ তবে এটি কয়েকজনকে জানতে সাহায্য করতে পারে যে সর্বোত্তম উত্তরে প্রদত্ত jQuery কোডটি নীচের নীচে করে ... এটি jQuery এর সাথে বা ছাড়াই কাজ করে:

function decodeEntities(input) {
  var y = document.createElement('textarea');
  y.innerHTML = input;
  return y.value;
}

20

আপনি https://github.com/mathiasbynens/he থেকে উপলভ্য তিনি লাইব্রেরিটি ব্যবহার করতে পারেন

উদাহরণ:

console.log(he.decode("J&#246;rg &amp J&#xFC;rgen rocked to &amp; fro "));
// Logs "Jörg & Jürgen rocked to & fro"

আমি এখানে এবং অন্য কোথাও অন্যান্য উত্তরে প্রদত্ত হ্যাকের পক্ষে ক্লায়েন্টাইড কোডে এই গ্রন্থাগারটি ব্যবহার করার কোনও কারণ ছিল কিনা কিনা এই প্রশ্নে আমি গ্রন্থাগারের লেখককে চ্যালেঞ্জ জানাই । তিনি কয়েকটি সম্ভাব্য ন্যায্যতা সরবরাহ করেছেন:<textarea>

  • আপনি যদি নোড.জেএস সার্ভারসাইড ব্যবহার করেন, এইচটিএমএল এনকোডিং / ডিকোডিংয়ের জন্য একটি লাইব্রেরি ব্যবহার করা আপনাকে একক সমাধান দেয় যা ক্লায়েন্টাইড এবং সার্ভারসাইড উভয়ই কাজ করে।

  • কিছু ব্রাউজারের সত্তা ডিকোডিং অ্যালগরিদমগুলিতে বাগ থাকে বা কিছু নামী অক্ষর রেফারেন্সের জন্য সমর্থন অনুপস্থিত । উদাহরণস্বরূপ, ইন্টারনেট এক্সপ্লোরার উভয়কে সঠিকভাবে ডিকোড করবে এবং নন-ব্রেকিং স্পেস ( &nbsp;) সঠিকভাবে রেন্ডার করবে তবে ড্যাকের উপাদানটির মাধ্যমে হ্যাকটি innerTextভেঙে <textarea>ফেলবে না (কেবলমাত্র একটি ছোট উপায়েই) breaking অতিরিক্ত হিসাবে, আইই 8 এবং 9 কেবল এইচটিএমএল 5-এ যুক্ত হওয়া নতুন নামযুক্ত চরিত্রের রেফারেন্সগুলিকে সমর্থন করে না , তিনি লেখক http://mathias.html5.org/tests/html এ নামকৃত চরিত্রের রেফারেন্স সাপোর্টের একটি পরীক্ষাও করেন / নাম-চরিত্র-রেফারেন্স / । আইই 8 এ এটি এক হাজারেরও বেশি ত্রুটির কথা জানিয়েছে।

    আপনি যদি সত্তা ডিকোডিং সম্পর্কিত ব্রাউজার বাগগুলি থেকে নিরোধক হতে চান এবং / অথবা নামযুক্ত চরিত্রের রেফারেন্সগুলির পুরো পরিসরটি পরিচালনা করতে সক্ষম হন তবে আপনি <textarea>হ্যাক দিয়ে দূরে যেতে পারবেন না ; তোমার মত একটি লাইব্রেরি প্রয়োজন হবে সে

  • তিনি কেবল সুন্দরভাবে অনুভব করেন যে জিনিসগুলি এভাবে করা কম হ্যাকি।


4
+1 jQuery সবকিছুর সমাধান নয়। কাজের জন্য সঠিক টুল ব্যবহার করুন।
ম্যাথিয়াস বাইনেন্স

এইচটিএমএল সত্তা ডিকোড করার সেরা উপায়। পারেন ব্যবহার innerHTML (এই এবং অনুরূপ প্রশ্ন দিকে) অন্যান্য সকল উত্তর (নতুন HTML এলিমেন্ট, প্রক্রিয়া HTML কোড তৈরি এবং তারপর যে উপাদান innerHTML প্রাপ্ত, এই XSS আক্রমণের প্রবন হতে পারেন যদি আপনি খুব সতর্কতা অবলম্বন নয়, আরো দেখুন ), অথবা তারা Underscore.js ব্যবহার করার সুপারিশ unescape বা Lodash unescape পদ্ধতি যা উভয় অসম্পূর্ণ রয়েছে (কয়েক এইচটিএমএল সত্ত্বা কেবল কাজ করে)। তিনি গ্রন্থাগারটি সবচেয়ে সম্পূর্ণ এবং নিরাপদ বিকল্প!
ands

18

সঙ্কেতাক্ষরে লিখা:

$("<textarea/>").html('<a>').html();      // return '&lt;a&gt'

ডিকোড:

$("<textarea/>").html('&lt;a&gt').val()   // return '<a>'

3
ইতিমধ্যে একটি উত্তর আছে যা কাজ করে এবং এটি এর সাথে প্রায় অভিন্ন। আমাদের সদৃশ
জবাবগুলির

4
এটি বৈধ উত্তর। টমের উত্তরে একটি ডিআইভি উপাদান ব্যবহার করা হয়েছে, যা এই উত্তরটি এক্সএসএসের পক্ষে দুর্বল করে তোলে।
ফ্রান্সিসকো হজ

2
স্বচ্ছতার জন্য এটি সেরা উত্তর।
ড্যান র‌্যান্ডল্ফ

4

ব্যবহার

myString = myString.replace( /\&amp;/g, '&' );

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

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


0

আমার কাছে এইচটিএমএল বোতামের মান হিসাবে একটি এইচটিএমএল সত্তা চরিত্র (⇓) থাকতে হবে। এইচটিএমএল কোডটি ব্রাউজারে শুরু থেকেই ভাল দেখাচ্ছে:

<input type="button" value="Embed & Share  &dArr;" id="share_button" />

এখন আমি একটি টগল যুক্ত করছি যা চরিত্রটিও প্রদর্শন করা উচিত। এটি আমার সমাধান

$("#share_button").toggle(
    function(){
        $("#share").slideDown();
        $(this).attr("value", "Embed & Share " + $("<div>").html("&uArr;").text());
    }

এটি বোতামে আবার প্রদর্শিত হয়। আমি আশা করি এটি কারও সাহায্য করবে।


আপনি ইউটিএফ -8 (বা ইউটিএফ -16, বা ⇑ চরিত্রটিকে সমর্থন করে এমন কোনও এনকোডিং) আপনার স্ক্রিপ্টটি পরিবেশন করতে সক্ষম হন তবেই আপনি ইউনিকোডে পালানোর ক্রমটি ব্যবহার করতে পারবেন (যেমন "Embed & Share \u21d1"), বা আরও ভাল "Embed & Share ⇑"। একটি জাভাস্ক্রিপ্ট স্ট্রিংয়ের মধ্যে একটি স্বেচ্ছাসেবী ইউনিকোড চরিত্রটিকে বেক করার জন্য এইচটিএমএল সত্ত্বাকে বিশ্লেষণ করার জন্য একটি ডিওএম উপাদান ব্যবহার করা একটি ধূর্ত এবং সৃজনশীল পদ্ধতি যা রুবে গোল্ডবার্গকে গর্বিত করে তুলবে, তবে এটি ভাল অভ্যাস নয়; ইউনিকোড পলায়ন বিশেষত এই ব্যবহারের কেসটি পরিচালনা করার জন্য ভাষায় রয়েছে।
মার্ক আমেরিকা

0

আপনাকে এইচটিএমএল সত্তাগুলির জন্য কাস্টম ফাংশন করতে হবে:

function htmlEntities(str) {
return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g,'&gt;').replace(/"/g, '&quot;');
}

আমার কোনও ধারণা নেই, এটি আমাকে এত পছন্দ করেছে +1 l-)
সাইমন টোদা

সম্ভবত এটি ভোট দেওয়া হয়েছিল কারণ এটি কেবল কিছু সত্ত্বাকে পরিচালনা করে।
জেসেন

আসল প্রশ্নটি কীভাবে সত্তাগুলি ডিকোড করবেন - এটি যা পছন্দসই তার বিপরীত কাজ করে ; এটা এনকোড অক্ষরের একটি অত্যন্ত সীমিত গোষ্টীর মধ্যে সত্ত্বা। যেমন ডাউন-ভোজের সরঞ্জামটিপ বলেছে, "এই উত্তরটি কার্যকর নয়"। আমি অবাক হয়েছি যে 4 বছর পরেও এটির নেট-পজেটিভ স্কোর রয়েছে।
স্টিফেন পি

0

মনে করুন আপনার স্ট্রিংয়ের নীচে আছে।

আমাদের ডিলাক্স কেবিনগুলি উষ্ণ, আরামদায়ক এবং মজাদার; আরামপ্রদ

var str = $("p").text(); // get the text from <p> tag
$('p').html(str).text();  // Now,decode html entities in your variable i.e 

আরআরটি এবং ফিরে বরাদ্দ

ট্যাগ।

এটাই.


0

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

Ext.util.Format.htmlDecode(innerHtmlContent)

এটি কেবলমাত্র 5 টি এইচটিএমএল সত্তার জন্য কাজ করবে। আপনি এটি ডকুমেন্টেশন এবং উত্স কোডে দেখতে পারেন ।
জেডি

0

একটি স্ট্রিং ক্লাস প্রসারিত করুন:

String::decode = ->
  $('<textarea />').html(this).text()

এবং পদ্ধতি হিসাবে ব্যবহার করুন:

"&lt;img src='myimage.jpg'&gt;".decode()

0

এটা চেষ্টা কর :

var htmlEntities = "&lt;script&gt;alert('hello');&lt;/script&gt;";
var htmlDecode =$.parseHTML(htmlEntities)[0]['wholeText'];
console.log(htmlDecode);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

পার্সএইচটিএমএল জেকারি লাইব্রেরিতে একটি ফাংশন এবং এটি প্রদত্ত স্ট্রিং সম্পর্কিত কিছু বিবরণ অন্তর্ভুক্ত করে এমন একটি অ্যারে ফিরিয়ে দেবে ..

কিছু ক্ষেত্রে স্ট্রিং বড় হচ্ছে, সুতরাং ফাংশনটি সামগ্রীটিকে অনেক সূচকে আলাদা করে দেবে ..

এবং সমস্ত সূচী ডেটা পেতে আপনার যে কোনও সূচীতে যাওয়া উচিত, তারপরে "পুরো পাঠ্য" নামক সূচীতে অ্যাক্সেস পান।

আমি সূচক 0 বেছে নিয়েছি কারণ এটি সমস্ত ক্ষেত্রে (ছোট স্ট্রিং বা বড় স্ট্রিং) কাজ করবে।


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

ব্যাখ্যাটি যোগ করা হয়েছে ... আপনাকে ধন্যবাদ :)
ফাওয়াজ আল রোমি

-1

এখানে এখনও একটি সমস্যা রয়েছে: ইনপুট মানকে বরাদ্দ করা হলে এস্কেপড স্ট্রিং পঠনযোগ্য মনে হয় না

var string = _.escape("<img src=fake onerror=alert('boo!')>");
$('input').val(string);

এক্সপামেল: https://jsfiddle.net/kjpdwmqa/3/


এটি প্রশ্নের উত্তর নয়। ওপি এইচটিএমএল সত্তাটি ডিকোড করতে বলেছে, কিন্তু এই উত্তরে আপনি escapeঅ্যান্ডসোর.জেএস এর পদ্ধতি ব্যবহার করছেন । এছাড়াও আপনার কোড নমুনা কীভাবে ওপির সমস্যার সমাধান করবে সে সম্পর্কে কোনও ব্যাখ্যা নেই।
জেডি

-1

বিকল্পভাবে, এটির জন্য একটি লাইব্রেরি রয়েছে ..

এখানে, https://cdnjs.com/libraries/he

npm install he                 //using node.js

<script src="js/he.js"></script>  //or from your javascript directory

ব্যবহারটি নিম্নরূপ ...

//to encode text 
he.encode('© Ande & Nonso® Company LImited 2018');  

//to decode the 
he.decode('&copy; Ande &amp; Nonso&reg; Company Limited 2018');

চিয়ার্স।


তাঁর লাইব্রেরি সম্পর্কে ইতিমধ্যে একটি উত্তর রয়েছে যা সম্পূর্ণ, সাধারণ কোড উদাহরণ এবং ভাল ব্যাখ্যা সহ তিনি আপনাকে কখন এবং কখন তাঁর লাইব্রেরি ব্যবহার করবেন ।
জেডি

-3

এইচটিএমএল সত্তাকে jQuery দিয়ে ডিকোড করতে, কেবল এই ফাংশনটি ব্যবহার করুন:

function html_entity_decode(txt){
    var randomID = Math.floor((Math.random()*100000)+1);
    $('body').append('<div id="random'+randomID+'"></div>');
    $('#random'+randomID).html(txt);
    var entity_decoded = $('#random'+randomID).html();
    $('#random'+randomID).remove();
    return entity_decoded;
}

ব্যবহারবিধি:

javascript:

var txtEncoded = "&aacute; &eacute; &iacute; &oacute; &uacute;";
$('#some-id').val(html_entity_decode(txtEncoded));

এইচটিএমএল:

<input id="some-id" type="text" />

-3

সবচেয়ে সহজ উপায় হ'ল আপনার উপাদানগুলিতে কোনও শ্রেণি নির্বাচককে সেট করার পরে নিম্নলিখিত কোডগুলি ব্যবহার করুন:

$(function(){
    $('.classSelector').each(function(a, b){
        $(b).html($(b).text());
    });
});

আর কিছুই দরকার নেই!

আমি এই সমস্যাটি পেয়েছি এবং এই স্পষ্ট সমাধানটি পেয়েছি এবং এটি দুর্দান্ত কাজ করে।


এটি ওপির প্রশ্নের উত্তর নয়। ওপি এইচটিএমএল সত্ত্বাকে STRING তে ডিকোড করতে বলেছে, এটি কেবল ওপির সমস্যা সমাধান করে না এটি এইচটিএমএল উপাদানগুলির মধ্যে পালানো এইচটিএমএল সত্তাগুলিকে অগ্রহণযোগ্যদের সাথে প্রতিস্থাপন করে যা করা উচিত নয়।
জেডি

-3

আমি মনে করি এটিই বেছে নেওয়া সমাধানের ঠিক বিপরীত।

var decoded = $("<div/>").text(encodedStr).html();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.