从字符串中删除 HTML 标记并保留“:”(冒号)[重复]

Posted

技术标签:

【中文标题】从字符串中删除 HTML 标记并保留“:”(冒号)[重复]【英文标题】:Removing HTML tags from a string and keeping ":" (colon) [duplicate] 【发布时间】:2012-10-08 03:28:09 【问题描述】:

可能重复:Strip html from Text javascript

有没有办法从Javascript中的字符串中删除html并保留:(冒号)

我已经解决了Strip HTML from Text JavaScript 和how do you strip html tags in textarea input 以及一些关于 SO 的类似问题,但无法找到正确的解决方案。

例如"Something here<div> content</div>" 应该给"Something here content""Something here :)" 应该给"Something here :)"

在其他问题中提供的解决方案有助于去除 HTML 内容,也可以去除笑脸。

编辑:在提到从文本中去除笑脸的解决方案之前,请注意,我需要这个来改进我在 www.chesshunt.com 上的聊天引擎解决方案。目前我正在剥离 HTML 标签和笑脸

我当前的代码

function strip(html) 
    var tmp = document.createElement("DIV");
    tmp.innerHTML = html;
    return tmp.textContent || tmp.innerText;
    

【问题讨论】:

请显示您尝试过但没有按预期工作的代码。 您链接到的 very first SO post 工作很好 jsfiddle.net/QXBZe HTML 剥离将删除文本冒号或分号是没有意义的。 @Anshu 为什么这么认为? jsfiddle.net/KZM2S @Anshu 那么也许您应该发布您当前正在使用的代码?因为您已经链接到应该适用于此任务的解决方案。因此,您的代码有错误,我们很乐意帮助您找到。但是我们可能不会在您的网站上注册,这样我们就可以筛选您的整个代码库并在其中的一小部分中找到一个小错误。只需发布您当前用于转义的代码即可。 : 是一个冒号。 ; 是一个分号。只是说... 【参考方案1】:

我不得不不同意您的说法,即“在其他问题中提供的解决方案有助于去除 html 内容,但也去除笑脸。”

以下是基于您的链接的示例:http://jsfiddle.net/be8gz/

【讨论】:

我真的不知道..它怎么不适合我。可能我一直在别的地方撞我的头。 @Anshu 问题可能出在您的 html 字符串的上游。 哇,它打破了我最喜欢的表情之一:>_ 哇,@Christophe 你太棒了!这个问题花了很多时间。但是你的回答对我很有用。你救了我。非常感谢【参考方案2】:

假设内容在另一个容器中,只需使用 .text() 函数:

$('#some_container').text();

【讨论】:

我已经提到我已经尝试过了。它不会保留笑脸,我需要它【参考方案3】:

你可以创建一个元素使用

var element = document.createNode('<div>'+yourString+'</div>');

然后获取 textContent(适用于除 IE 之外的所有浏览器)或 innerText。

编辑:Arg,标签中最初没有 jQuery...所以可以使用

var stripped = $('<div>'+yourString+'</div>').text();

DEMONSTRATION (keeping the smiley)

【讨论】:

这是最佳答案。【参考方案4】:

一个简单的正则表达式就可以完成这项工作

var string = "Something here<div> content</div> :)";
alert(string.replace(/<([^>]+)>.*?<\/\1>/g,''));​

【讨论】:

不知道为什么这被否决了,它确实有效.... 我正在使用这个表达式,我从来没有遇到过问题。我从不同的网站 Feed 收集数据【参考方案5】:

可以使用正则表达式jsfiddle

    var myStr = "Something here<div> content</div>";    
    var myRegEx = /<\/?[^<>]*\/?>/gim;
     var result = myStr.split(myRegEx).join("");

    result = myStr.replace(/<\/?[^<>]*\/?>/gim, "");

​

【讨论】:

很可能是因为regex is the wrong tool to parse HTML。【参考方案6】:

我不明白你是否想保留笑脸。根据您问题中的示例,我必须假设您要保留笑脸,但要摆脱任何 html 标签。我认为这样的正则表达式会起作用:

pattern = /<.*?>/g;

请参阅JSFiddle。

【讨论】:

以上是关于从字符串中删除 HTML 标记并保留“:”(冒号)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从字符串中删除 html 标记

正则表达式 - 将 HTML 转换为有效的 XML 标记 [重复]

从列表中的对象中删除字节顺序标记

从字符串中删除 HTML 标记(R 编程)

从字符串中删除 HTML 标记

从 Python 字符串中删除不在允许列表中的 HTML 标记