2016-10-18 96 views
1

我在互联网上找到了这段代码。它需要一个句子,并使每个单词与这个词链接。但它有弱点:如果一个句子中有HTML,这个脚本不会删除它。在脚本中删除HTML标签

例如:它取代“<b>asserted</b>”与“http://www.merriam-webster.com/dictionary/<b>asserted</b>

你能告诉我该怎么在这个代码改变它来改变“<b>asserted</b>”到“http://www.merriam-webster.com/dictionary/asserted”。

var content = document.getElementById("sentence").innerHTML; 

var punctuationless = content.replace(/[.,\/#!$%\؟^?&\*;:{}=\-_`~()”“"]/g, ""); 
var mixedCase = punctuationless.replace(/\s{2,}/g); 
var finalString = mixedCase.toLowerCase(); 

var words = (finalString).split(" "); 

var punctuatedWords = (content).split(" "); 

var processed = ""; 
for (i = 0; i < words.length; i++) { 
    processed += "<a href = \"http://www.merriam-webster.com/dictionary/" + words[i] + "\">"; 
    processed += punctuatedWords[i]; 
    processed += "</a> "; 
} 

document.getElementById("sentence").innerHTML = processed; 
+1

的[JavaScript的可能重复:如何去掉字符串中的HTML标签?](http://stackoverflow.com/questions/5002111/javascript-how-to-strip-html-tags-from-string) – evolutionxbox

+0

你可能想要像你的正则表达式中的'.' ' \“,就像你用'\ -'做的那样。 – Azamantes

+2

可能的重复[Strip Text from Text JavaScript](http://stackoverflow.com/questions/822452/strip-html-from-text-javascript) – Andreas

回答

5

此正则表达式/ < {1} [^ <>] {1,}> {1} /克应该更换在一个字符串,它是其中的两个之间的任何文本并且括号本身带有空格。这

var str = "<hi>How are you<hi><table><tr>I<tr><table>love cake<g>" 
 
    str = str.replace(/<{1}[^<>]{1,}>{1}/g," ") 
 
    document.writeln(str);

会给回 “你怎么我爱蛋糕”。

如果粘贴此

var stripHTML = str.mixedCase(/<{1}[^<>]{1,}>{1}/g,"") 

略低于此

var mixedCase = punctuationless.replace(/\s{2,}/g); 

,并在之后的行与stripHTML取代混合词,它可能会工作

+0

非常感谢!这工作:) –

+0

非常感谢你的努力来帮助我。这真的很有价值。 –

+0

不客气,随时欢迎。 –

1
function stripAllHtml(str) { 
    if (!str || !str.length) return '' 

    str = str.replace(/<script.*?>.*?<\/script>/igm, '') 

    let tmp = document.createElement("DIV"); 
    tmp.innerHTML = str; 

    return tmp.textContent || tmp.innerText || ""; 
} 

stripAllHtml('<a>test</a>') 

此功能将去除所有的HTML并返回纯文本。

希望这将用于工作,你

+0

非常感谢您的回答。你能告诉我在脚本中放置这个函数的位置吗? –

+0

@МаксимЦіпан你只需将你的HTML字符串传递给这个函数并在使用你的URL时使用返回的结果 –

+0

@gaurav joshi谢谢你的帮助和耐心。 –