जावास्क्रिप्ट में विशेष वर्णों को HTML में बदलें


121

क्या किसी को पता है कि विशेष वर्णों को किस रूप में बदलना HTMLहै Javascript?

उदाहरण:

  • &(एम्परसेंड) बन जाता है &amp
  • "(डबल कोट) &quotजब ENT_NOQUOTESसेट नहीं किया जाता है।
  • '(एकल उद्धरण) &#039केवल तब ही बन जाता है जब ENT_QUOTESसेट किया जाता है।
  • <(इससे कम) हो जाता है &lt
  • >(इससे बड़ा) बन जाता है &gt

इन्हें भी देखें: stackoverflow.com/questions/1354064
क्रिस

आप इस लाइब्रेरी का उपयोग कर सकते हैं: npmjs.com/package/utf8
Camilo Ortegón

जवाबों:


77

आपको एक फ़ंक्शन की आवश्यकता है जो कुछ ऐसा करता है

return mystring.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");

लेकिन सिंगल / डबल कोट्स के विभिन्न हैंडलिंग के लिए आपकी इच्छा को ध्यान में रखते हुए।


स्लेश जी क्या करता है?
जॉनीबीज़ल

5
@JohnnyBizzle /gएक नियमित अभिव्यक्ति का अर्थ है "वैश्विक"। सीधे शब्दों में कहें, स्ट्रिंग की सभी घटनाओं को प्रतिस्थापित किया जाएगा। बिना /gकेवल पहले मैच को बदला जाएगा।
केविन गिंबेल

207

मेरी राय में सबसे अच्छा तरीका कई मामलों को संभालने के लिए ब्राउज़र की इनबिल्ट एचटीएमएल एस्केप कार्यक्षमता का उपयोग करना है। ऐसा करने के लिए बस DOM ट्री में एक एलीमेंट बनाएं और innerTextएलिमेंट को अपने स्ट्रिंग में सेट करें । फिर innerHTMLतत्व को पुनः प्राप्त करें । ब्राउज़र HTML एन्कोडेड स्ट्रिंग लौटाएगा।

function HtmlEncode(s)
{
  var el = document.createElement("div");
  el.innerText = el.textContent = s;
  s = el.innerHTML;
  return s;
}

परीक्षण चालन:

alert(HtmlEncode('&;\'><"'));

आउटपुट:

&amp;;'&gt;&lt;"

HTML से बचने का यह तरीका प्रोटोटाइप JS लाइब्रेरी द्वारा भी उपयोग किया जाता है, हालांकि मेरे द्वारा दिए गए सरलीकृत नमूने से अलग है।

नोट: आपको अभी भी उद्धरण (डबल और सिंगल) से बचने की आवश्यकता होगी। आप यहां दूसरों द्वारा उल्लिखित किसी भी पद्धति का उपयोग कर सकते हैं।


3
ध्यान दें कि delete elयहाँ एक गलती है। perfectionkills.com/understanding-delete
gblazex

जब मैं कोशिश करता हूं तो यह मेरे लिए कुछ नहीं करता है। मैं पात्रों को वापस अपरिवर्तित करता हूं।
मॉस

1
क्षमा करें, मैं विषम वर्णों के साथ परीक्षण कर रहा था, साथ ही Chrome डरपोक है और आपको वास्तविक HTML आउटपुट नहीं दिखाता है, लेकिन Firebug करता है (वास्तव में यह कॉपीराइट प्रतीक के लिए एक HTML इकाई दिखाता है जब उत्पन्न स्रोत इसे एनकोड नहीं करता है)। यह ठीक काम करता है <>&लेकिन Neotropic या KooiInc के समाधान के रूप में सभी को शामिल नहीं करता है।
मॉस

20
jQuery के साथ,output = $('<div>').text(input).html()
ड्रैगन

6
दोनों विधियाँ 'apos' में रूपांतरित नहीं होती हैं; और "में & quot; तो यह अभी भी XSS हमलों के लिए इस्तेमाल किया जा सकता है।
कोई व्यक्ति

32

यह सामान्य कार्य हर गैर अक्षर वर्ण को अपने htmlcode (सांख्यिक) में संलग्न करता है:

function HTMLEncode(str) {
    var i = str.length,
        aRet = [];

    while (i--) {
        var iC = str[i].charCodeAt();
        if (iC < 65 || iC > 127 || (iC>90 && iC<97)) {
            aRet[i] = '&#'+iC+';';
        } else {
            aRet[i] = str[i];
        }
    }
    return aRet.join('');
}

यह वास्तव में चतुर लगता है, लेकिन मैं इसे केवल मूल बातें बदलने के लिए प्राप्त कर सकता हूं:<>&
मॉस

nvm। यह एक कंसोल में ठीक चलता है, लेकिन जब आप ब्राउज़र पर आउटपुट करते हैं तो ऐसा लगता है कि यह परिवर्तित सामग्री नहीं है। उस के साथ क्या हो रहा है?
मॉस

@ मॉस: ब्राउजर htmlencoded कैरेक्टर्स को उनके द्वारा दर्शाए गए कैरेक्टर्स तक पहुंचाता है। Html- एन्कोडेड वर्णों का लाभ यह है कि एक ब्राउज़र को विशेष वर्णों के अनुवाद (जैसे) के बारे में अनुमान लगाने की आवश्यकता नहीं होती है और इस तरह हमेशा उन पात्रों को प्रस्तुत किया जाता है जैसे उन्हें गाया जाना चाहिए।
KooiInc

आप इसे बदलने के लिए विचार कर सकते हैं, जैसे अरै की पहुंच को बंद करना। IE7 और नीचे का समर्थन नहीं करते हैं, और आप बस आसानी से charCodeAt कॉल कर सकते हैं सही के साथ मैं तर्क के रूप में str के सही बंद। var iC = str.charCodeAt(i)
चेस

यह कोड should वर्ण के लिए सही HTML इकाई मूल्य का उत्पादन नहीं कर रहा है जो & # 177 होना चाहिए; लेकिन यह वापस आ रहा है & # 65533; जो एक अज्ञात चरित्र है ।
पॉल

21

मोज़िला से ...

ध्यान दें कि charCodeAt हमेशा एक मान लौटाएगा जो 65,536 से कम है। इसका कारण यह है कि उच्च कोड बिंदुओं को एक जोड़ी (निम्न मूल्यवान) "सरोगेट" छद्म वर्णों द्वारा दर्शाया जाता है जो वास्तविक चरित्र को समाहित करने के लिए उपयोग किया जाता है। इस वजह से, ऐसे पात्रों के लिए 65,536 और उससे अधिक मूल्य के व्यक्तिगत पात्रों के लिए पूर्ण चरित्र की जांच या पुन: पेश करने के लिए, न केवल charCodeAt (i) को पुनर्प्राप्त करना आवश्यक है, बल्कि charCodeAt (i + 1) (जैसे कि जांच कर रहा है) / दो अक्षर के साथ एक स्ट्रिंग को पुन: प्रस्तुत करना)।

सबसे अच्छा समाधान

/**
 * (c) 2012 Steven Levithan <http://slevithan.com/>
 * MIT license
 */
if (!String.prototype.codePointAt) {
    String.prototype.codePointAt = function (pos) {
        pos = isNaN(pos) ? 0 : pos;
        var str = String(this),
            code = str.charCodeAt(pos),
            next = str.charCodeAt(pos + 1);
        // If a surrogate pair
        if (0xD800 <= code && code <= 0xDBFF && 0xDC00 <= next && next <= 0xDFFF) {
            return ((code - 0xD800) * 0x400) + (next - 0xDC00) + 0x10000;
        }
        return code;
    };
}

/**
 * Encodes special html characters
 * @param string
 * @return {*}
 */
function html_encode(string) {
    var ret_val = '';
    for (var i = 0; i < string.length; i++) { 
        if (string.codePointAt(i) > 127) {
            ret_val += '&#' + string.codePointAt(i) + ';';
        } else {
            ret_val += string.charAt(i);
        }
    }
    return ret_val;
}

उपयोग उदाहरण:

html_encode("✈");

21

एक फ़ंक्शन बनाएं जो स्ट्रिंग का उपयोग करता है replace

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

मुझे html में प्रदर्शित करने के लिए मेरे इनपुट मान में केवल एकल उद्धरण (') और दोहरे उद्धरण (") के साथ समस्या का सामना करना पड़ रहा था। यदि उपयोगकर्ता इसे जोड़ता है तो स्क्रिप्ट टूट रही थी।
धरम माली

13

उन लोगों के लिए जो एक स्ट्रिंग के अंदर पूर्णांक चार कोड को डिकोड करना चाहते हैं &#xxx;, इस फ़ंक्शन का उपयोग करें:

function decodeHtmlCharCodes(str) { 
  return str.replace(/(&#(\d+);)/g, function(match, capture, charCode) {
    return String.fromCharCode(charCode);
  });
}

// Will output "The show that gained int’l reputation’!"
console.log(decodeHtmlCharCodes('The show that gained int&#8217;l reputation&#8217;!'));

ES6

const decodeHtmlCharCodes = str => 
  str.replace(/(&#(\d+);)/g, (match, capture, charCode) => 
    String.fromCharCode(charCode));

// Will output "The show that gained int’l reputation’!"
console.log(decodeHtmlCharCodes('The show that gained int&#8217;l reputation&#8217;!'));


3
यह स्वीकृत उत्तर होना चाहिए क्योंकि यह सब कुछ डिकोड करेगा।
क्वेशोफैट

यह वह उत्तर है जिसकी मुझे तलाश थी। धन्यवाद।
डेजेनिस एच।

8
function char_convert() {

    var chars = ["©","Û","®","ž","Ü","Ÿ","Ý","$","Þ","%","¡","ß","¢","à","£","á","À","¤","â","Á","¥","ã","Â","¦","ä","Ã","§","å","Ä","¨","æ","Å","©","ç","Æ","ª","è","Ç","«","é","È","¬","ê","É","­","ë","Ê","®","ì","Ë","¯","í","Ì","°","î","Í","±","ï","Î","²","ð","Ï","³","ñ","Ð","´","ò","Ñ","µ","ó","Õ","¶","ô","Ö","·","õ","Ø","¸","ö","Ù","¹","÷","Ú","º","ø","Û","»","ù","Ü","@","¼","ú","Ý","½","û","Þ","€","¾","ü","ß","¿","ý","à","‚","À","þ","á","ƒ","Á","ÿ","å","„","Â","æ","…","Ã","ç","†","Ä","è","‡","Å","é","ˆ","Æ","ê","‰","Ç","ë","Š","È","ì","‹","É","í","Œ","Ê","î","Ë","ï","Ž","Ì","ð","Í","ñ","Î","ò","‘","Ï","ó","’","Ð","ô","“","Ñ","õ","”","Ò","ö","•","Ó","ø","–","Ô","ù","—","Õ","ú","˜","Ö","û","™","×","ý","š","Ø","þ","›","Ù","ÿ","œ","Ú"]; 
    var codes = ["&copy;","&#219;","&reg;","&#158;","&#220;","&#159;","&#221;","&#36;","&#222;","&#37;","&#161;","&#223;","&#162;","&#224;","&#163;","&#225;","&Agrave;","&#164;","&#226;","&Aacute;","&#165;","&#227;","&Acirc;","&#166;","&#228;","&Atilde;","&#167;","&#229;","&Auml;","&#168;","&#230;","&Aring;","&#169;","&#231;","&AElig;","&#170;","&#232;","&Ccedil;","&#171;","&#233;","&Egrave;","&#172;","&#234;","&Eacute;","&#173;","&#235;","&Ecirc;","&#174;","&#236;","&Euml;","&#175;","&#237;","&Igrave;","&#176;","&#238;","&Iacute;","&#177;","&#239;","&Icirc;","&#178;","&#240;","&Iuml;","&#179;","&#241;","&ETH;","&#180;","&#242;","&Ntilde;","&#181;","&#243;","&Otilde;","&#182;","&#244;","&Ouml;","&#183;","&#245;","&Oslash;","&#184;","&#246;","&Ugrave;","&#185;","&#247;","&Uacute;","&#186;","&#248;","&Ucirc;","&#187;","&#249;","&Uuml;","&#64;","&#188;","&#250;","&Yacute;","&#189;","&#251;","&THORN;","&#128;","&#190;","&#252","&szlig;","&#191;","&#253;","&agrave;","&#130;","&#192;","&#254;","&aacute;","&#131;","&#193;","&#255;","&aring;","&#132;","&#194;","&aelig;","&#133;","&#195;","&ccedil;","&#134;","&#196;","&egrave;","&#135;","&#197;","&eacute;","&#136;","&#198;","&ecirc;","&#137;","&#199;","&euml;","&#138;","&#200;","&igrave;","&#139;","&#201;","&iacute;","&#140;","&#202;","&icirc;","&#203;","&iuml;","&#142;","&#204;","&eth;","&#205;","&ntilde;","&#206;","&ograve;","&#145;","&#207;","&oacute;","&#146;","&#208;","&ocirc;","&#147;","&#209;","&otilde;","&#148;","&#210;","&ouml;","&#149;","&#211;","&oslash;","&#150;","&#212;","&ugrave;","&#151;","&#213;","&uacute;","&#152;","&#214;","&ucirc;","&#153;","&#215;","&yacute;","&#154;","&#216;","&thorn;","&#155;","&#217;","&yuml;","&#156;","&#218;"];

    for(x=0; x<chars.length; x++){
        for (i=0; i<arguments.length; i++){
            arguments[i].value = arguments[i].value.replace(chars[x], codes[x]);
        }
    }
 }

char_convert(this);

1
यह बहुत अच्छा काम करता है। लेकिन किसी कारण से जब इसे कुछ JQuery की कार्यक्षमता के साथ मिलाया जाता है, तो यह मिसफायर हो जाता है। कभी-कभी कुछ, या केवल एक जोड़े में परिवर्तित होता है। लेकिन सामान्य तौर पर, महान काम करता है। onBlur = "char_convert (this);"
निओट्रोपिक

उह, मुझे एक त्रुटि "अनकैप्ड टाइपराइटर: क्रोम में अपरिभाषित" की जगह 'विधि' को बदल नहीं सकती है और फायरबग में "तर्क [।] अपरिभाषित है"।
मॉस

उन सभी विशेष पात्रों को एक सरणी में रखना जैसे कि पूरी तरह से व्यर्थ है। अन्य उत्तर देखें।
गैविन

मेरे लिए सबसे अच्छा समाधान, एकमात्र वह जो í को & iacute में रूपांतरित करता है; उदाहरण के लिए।
एडब्लॉयर

आप अपने कीबोर्ड से उन चार्ट को कैसे प्राप्त करेंगे? मुझे पता है कि यह एक मूर्खतापूर्ण प्रश्न है ... उदाहरण के लिए OS X में
पॉजिटिव

7

जैसा कि dragonयह करने के लिए सबसे साफ तरीके से उल्लेख किया गया था jQuery:

function HtmlEncode(s) {
    return $('<div>').text(s).html();
}

function HtmlDecode(s) {
    return $('<div>').html(s).text();
}

दिलचस्प है, लेकिन अगर आपके स्ट्रिंग में स्थान है, तो यह इसे बदल नहीं देगा। एक बेहतर तरीका यह है कि आप एनकोडराइ (आपका स्ट्रींग) का उपयोग करें;
माइक गिल्डहिल

6
समारोह ConvChar (str) {
  c = {'<': '& lt;', '>': '& gt;', '&', '& amp;', '' ':' & quot; ',' '': '& # 039;';
       '#': '& # 035;' };
  वापसी str.replace (/ [<&> '"#] / जी, फ़ंक्शन (s) {रिटर्न c [s];});
}

चेतावनी (कन्वर्चर ('<- "- & -" -> - <- \' - # - \ '->'));

परिणाम:

& Lt; - & quot; - & amp; - & quot; - & gt; - & lt; - & # 039; - & # 035; - & # 039; - & gt;

Testarea टैग में:

<- "- और -" -> - <-'- # -'->

यदि आप लंबे कोड में बस एक छोटा सा चार्ट बदल देंगे ...


4

PREज्यादातर अन्य HTML टैग्स में एक टैग में- एक बैच फ़ाइल के लिए सादा पाठ जो आउटपुट पुनर्निर्देशन वर्णों का उपयोग करता है (<और>) HTML को तोड़ देगा, लेकिन यहां मेरी टिप है : एक TEXTAREAतत्व में कुछ भी नहीं जाता है- यह नहीं टूटेगा HTML, मुख्यतः क्योंकि हम एक नियंत्रण के अंदर हैं जो OS द्वारा संस्थापित और नियंत्रित किया जाता है, और इसलिए इसकी सामग्री HTML इंजन द्वारा पार्स नहीं की जा रही है।

एक उदाहरण के रूप में, मैं जावास्क्रिप्ट का उपयोग करके अपने बैच फ़ाइल के सिंटैक्स को उजागर करना चाहता हूं। मैं केवल HTML आरक्षित वर्णों के बारे में चिंता किए बिना एक textarea में कोड पेस्ट करता हूं, और उनके पास innerHTMLtextarea की संपत्ति की स्क्रिप्ट प्रक्रिया होती है , जो पाठ को HTML आरक्षित वर्णों के साथ उनके संबंधित ISO-8859-1 संस्थाओं द्वारा प्रतिस्थापित किया जाता है।

जब आप किसी तत्व की innerHTML(और outerHTML) संपत्ति को पुनः प्राप्त करते हैं, तो ब्राउज़र विशेष वर्णों से स्वतः ही बच जाएगा । एक textarea (और कौन जानता है, शायद टाइप टेक्स्ट का एक इनपुट) का उपयोग करना आपको रूपांतरण (मैन्युअल रूप से या कोड के माध्यम से) करने से बचाता है।

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


3

यदि आपको सभी मानकीकृत चरित्र संदर्भों , यूनिकोड और अस्पष्ट एम्परसेंड्स के लिए समर्थन की आवश्यकता है , तो वह पुस्तकालय केवल 100% विश्वसनीय समाधान है जिसके बारे में मुझे पता है!


उदाहरण का उपयोग करें

he.encode('foo © bar ≠ baz 𝌆 qux'); 
// Output : 'foo &#xA9; bar &#x2260; baz &#x1D306; qux'

he.decode('foo &copy; bar &ne; baz &#x1D306; qux');
// Output : 'foo © bar ≠ baz 𝌆 qux'

3

एक समाधान:

var temp = $("div").text("<");
var afterEscape = temp.html(); // afterEscape == "&lt;"

2
var swapCodes   = new Array(8211, 8212, 8216, 8217, 8220, 8221, 8226, 8230, 8482, 169, 61558, 8226, 61607);
var swapStrings = new Array("--", "--", "'",  "'",  '"',  '"',  "*",  "...", "&trade;", "&copy;", "&bull;", "&bull;", "&bull;");

var TextCheck = {
    doCWBind:function(div){
        $(div).bind({
            bind:function(){
                TextCheck.cleanWord(div);
            },
            focus:function(){
                TextCheck.cleanWord(div);
            },
            paste:function(){
                TextCheck.cleanWord(div);
            }
        }); 
    },
    cleanWord:function(div){
        var output = $(div).val();
        for (i = 0; i < swapCodes.length; i++) {
            var swapper = new RegExp("\\u" + swapCodes[i].toString(16), "g");
            output = output.replace(swapper, swapStrings[i]);
        }
        $(div).val(output);
    }
}

एक और जो हम अब उपयोग करते हैं जो काम करता है। इसके ऊपर मेरे पास इसकी बजाय एक स्क्रिप्ट है और परिवर्तित कोड लौटाता है। केवल छोटे लेखों पर अच्छा (मतलब लेख / ब्लॉग ect पर पूर्ण नहीं ...)


ऊपर के लिए। अधिकांश वर्णों पर काम करता है।

var swapCodes   = new Array(8211, 8212, 8216, 8217, 8220, 8221, 8226, 8230, 8482, 61558, 8226, 61607,161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 338, 339, 352, 353, 376, 402);
var swapStrings = new Array("--", "--", "'",  "'",  '"',  '"',  "*",  "...", "&trade;", "&bull;", "&bull;", "&bull;", "&iexcl;", "&cent;", "&pound;", "&curren;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;", "&ordf;", "&laquo;", "&not;", "&shy;", "&reg;", "&macr;", "&deg;", "&plusmn;", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;", "&middot;", "&cedil;", "&sup1;", "&ordm;", "&raquo;", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&Agrave;", "&Aacute;", "&Acirc;", "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;", "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", "&Oslash;", "&Ugrave;", "&Uacute;", "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;", "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&divide;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&yacute;", "&thorn;", "&yuml;", "&#338;", "&#339;", "&#352;", "&#353;", "&#376;", "&#402;");

मैं एक जावास्क्रिप्ट फ़ाइल बनाता हूं जिसमें ऊपर सहित बहुत अधिक कार्यक्षमता है। http://www.neotropicsolutions.com/JSChars.zip

आवश्यक सभी फाइलें शामिल हैं। मैंने jQuery 1.4.4 जोड़ा। केवल इसलिए कि मैंने अन्य संस्करणों में मुद्दों को देखा, फिर भी उन्हें आज़माने के लिए।

Requires: jQuery & jQuery Impromptu from: http://trentrichardson.com/Impromptu/index.php

1. Word Count
2. Character Conversion
3. Checks to ensure this is not passed: "notsomeverylongstringmissingspaces"
4. Checks to make sure ALL IS NOT ALL UPPERCASE.
5. Strip HTML

    // Word Counter
    $.getScript('js/characters.js',function(){
            $('#adtxt').bind("keyup click blur focus change paste",
                function(event){
                    TextCheck.wordCount(30, "#adtxt", "#adtxt_count", event);
            });
            $('#adtxt').blur(
                function(event){
                    TextCheck.check_length('#adtxt'); // unsures properly spaces-not one long word
                    TextCheck.doCWBind('#adtxt');// char conversion
            });

            TextCheck.wordCount(30, "#adtxt", "#adtxt_count", false);
        });

    //HTML
    <textarea name="adtxt" id="adtxt" rows="10" cols="70" class="wordCount"></textarea>
<div id="adtxt_count" class="clear"></div>

    // Just Character Conversions:
    TextCheck.doCWBind('#myfield');

    // Run through form fields in a form for case checking.
    // Alerts user when field is blur'd.
    var labels = new Array("Brief Description","Website URL","Contact Name","Website","Email","Linkback URL");
    var checking = new Array("descr","title","fname","website","email","linkback");
    TextCheck.check_it(checking,labels);

    // Extra security to check again, make sure form is not submitted
    var pass = TextCheck.validate(checking,labels);
    if(pass){
        //do form actions
    }


    //Strip HTML
    <textarea name="adtxt" id="adtxt" rows="10" cols="70" onblur="TextCheck.stripHTML(this);"></textarea>

2
 <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>html</title>  
      <script>
      $(function() {   
      document.getElementById('test').innerHTML = "&amp;";
      });

      </script>
    </head>
    <body>
    <div id="test"></div>
    </body>
    </html>

आप उपरोक्त कोड का उपयोग करके बस विशेष वर्णों को html में परिवर्तित कर सकते हैं।


2

यहाँ एक अच्छा पुस्तकालय है जिसे मैंने इस संदर्भ में बहुत उपयोगी पाया है।

https://github.com/mathiasbynens/he

इसके लेखक के अनुसार:

यह HTML के अनुसार सभी मानकीकृत नामित वर्ण संदर्भों का समर्थन करता है, अस्पष्ट एम्परसेंड और अन्य किनारे के मामलों को संभालता है जैसे कि एक ब्राउज़र होगा, एक व्यापक परीक्षण सूट होता है, और - कई अन्य जावास्क्रिप्ट समाधानों के विपरीत - वह सूक्ष्म यूनिकोड प्रतीकों को ठीक से संभालता है


गणित के लिए यह उपकरण github.com/mathiasbynens/he बहुत अच्छा है और ऑनलाइन खेल का मैदान भी है
मोहम्मद हुसैन

1

यहाँ कुछ तरीके हैं जो मैं Jquery की आवश्यकता के बिना उपयोग करता हूं:

आप अपने स्ट्रिंग में हर कैरेक्टर को एनकोड कर सकते हैं :

function encode(e){return e.replace(/[^]/g,function(e){return"&#"+e.charCodeAt(0)+";"})}

या (जैसे , inebreaks, <,>, "और ') के बारे में चिंता करने के लिए मुख्य सुरक्षित एन्कोडिंग वर्णों को लक्षित करें :

function encode(r){
return r.replace(/[\x26\x0A\<>'"]/g,function(r){return"&#"+r.charCodeAt(0)+";"})
}

test.value=encode('How to encode\nonly html tags &<>\'" nice & fast!');

/*************
* \x26 is &ampersand (it has to be first),
* \x0A is newline,
*************/
<textarea id=test rows="9" cols="55">www.WHAK.com</textarea>


0
function escape (text)
{
  return text.replace(/[<>\&\"\']/g, function(c) {
    return '&#' + c.charCodeAt(0) + ';';
  });
}

alert(escape("<>&'\""));

0

यह आपके प्रश्न का विधिवत उत्तर नहीं देता है, लेकिन यदि आप innerHTMLकिसी तत्व के भीतर पाठ लिखने के लिए उपयोग कर रहे हैं और आप एन्कोडिंग मुद्दों में भाग गए हैं, तो बस उपयोग करें textContent:

var s = "Foo 'bar' baz <qux>";

var element = document.getElementById('foo');
element.textContent = s;

// <div id="foo">Foo 'bar' baz <qux></div>

0

हम DOMParserविशेष वर्ण रूपांतरण के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं ।

const parser = new DOMParser();
const convertedValue = (parser.parseFromString("&#039 &amp &#039 &lt &gt", "application/xml").body.innerText;

0

जेएस में एक्सएमएल एस्केप चार्ट को एनकोड करने का सरल कार्य निम्नलिखित है

Encoder.htmlEncode (unsafeText);


0

आप इसे .text () से .html () में बदलकर ठीक कर सकते हैं। यह मेरे लिए काम कर रहा है।


-1
<html>
<body>
<script type="text/javascript">
var str= "&\"'<>";
alert('B4 Change:\n' + str);
str= str.replace(/\&/g,'&amp;');
str= str.replace(/</g,'&lt;');
str= str.replace(/>/g,'&gt;');
str= str.replace(/\"/g,'&quot;');
str= str.replace(/\'/g,'&#039;');
alert('After change:\n' + str);
</script>
</body>
</html>      

परीक्षण के लिए इसका उपयोग करें: http://www.w3schools.com/js/tryit.asp?filename=tryjs_sxt


-1

हां, लेकिन अगर आपको परिणामी स्ट्रिंग को बिना बदले वापस डालने की आवश्यकता है, तो आपको करने की आवश्यकता है:

str.replace(/'/g,"&amp;amp;#39;"); // and so on


-4

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

जैसे,

escape("yourString");

1
HTML के लिए नहीं URL में डालने के लिए सांकेतिक शब्दों में बदलना (और फ़ंक्शन वैसे भी हटा दिया गया है क्योंकि यह यूनिकोड के लिए टूट गया है)।
क्वेंटिन

-4
public static string HtmlEncode (string text)
{
    string result;
    using (StringWriter sw = new StringWriter())
    {
        var x = new HtmlTextWriter(sw);
        x.WriteEncodedText(text);
        result = sw.ToString();
    }
    return result;

}

क्या यह समाधान एक जावास्क्रिप्ट कोड भी है? क्योंकि मुझे JAVA या C # दिखता है।
Mr.TK

यह जावास्क्रिप्ट नहीं है।
डिएगो फोर्ट्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.