如何从字符串中删除所有html标签[重复]

Posted

技术标签:

【中文标题】如何从字符串中删除所有html标签[重复]【英文标题】:How to remove all html tags from a string [duplicate] 【发布时间】:2015-10-09 13:06:43 【问题描述】:

您好,我正在尝试从显示错误的特定字符串中删除所有 html 标记。

这是我的字符串:

<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>

我的 jQuery 代码在这里:

var item = <p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>;
item = item.replace(/~/g, '');
item = item.replace(/<p>/g, '');
item = item.replace('</p>'/g, '');
var splitArray = item.split('<br />');
var l = splitArray.length;
for (var i = 0; i < l; i++) 
    out = out + "<li><span class='sp_icon sp_star_icon'></span> "
          + splitArray[i].trim() + "</li>";

console.log(item);

【问题讨论】:

该错误是否与您的第一个字符串未用引号括起来的事实有关?或者这不是它在您的代码中的实际外观?请确保您发布的正是您使用的内容。并告诉我们错误。 您的变量item 必须用引号引起来。 第三个替换('&lt;/p&gt;'/g)也很奇怪。我认为这根本行不通 【参考方案1】:

您可以使用正则表达式去除所有 html 标记://g

这里详细描述:http://www.pagecolumn.com/tool/all_about_html_tags.htm

在您的 JS 代码中,它看起来像这样:

item = item.replace(/<(.|\n)*?>/g, '');

【讨论】:

OP 应该注意:不建议这样做,因为您的正则表达式将永远无法像真正的浏览器 HTML 解析引擎那样宽松和包罗万象。如果你要删除 known HTML,那很酷,但如果这个 HTML 未知,那么你真的应该寻找一个合适的 HTML 解析引擎,最方便的是本地浏览器 DOM :)【参考方案2】:

不要自己做,让 DOM 为你做。

例如(使用 jQuery)

jQuery("<p>Hi there</p>...").text();
    // => "Hi there..."

例如(没有 jQuery)

var d = document.createElement('div');
d.innerHTML = "<p>Hi there</p>...";
(d.textContent || d.innerText); // => "Hi there..."

【讨论】:

【参考方案3】:

使用 vanilla JS 你可以这样做

var item = '<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>';

function getText(html) 
    var tmp = document.createElement('div');
    tmp.innerHTML = html;
    
    return tmp.textContent || tmp.innerText;


console.log(getText(item));

【讨论】:

【参考方案4】:
var item = '<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>'

item = item.replace(/<\/?.+?>/ig, '');

【讨论】:

【参考方案5】:

我希望您只是尝试从字符串中删除 HTML 标记。以下应该工作。虽然可能需要测试。

filtered = yourString.replace(/<[a-z]1>.*?<\/[a-z]1>/gi, ""); 

如果您只是想摆脱和标记并将文本保留在其中

filtered = yourString.replace(/<\/0,1[a-z]+>/gi, "");

【讨论】:

【参考方案6】:

你可以使用jQuery的文本方法。

var item = '<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>';
console.log($(item).text());

您可以在http://jsfiddle.net/gL7fufax/查看小提琴代码

【讨论】:

【参考方案7】:

根据要求提供您的特定字符串(删除 &lt;p&gt; 元素):

item = item.replace(/<\/?p>/g,''); // will globally find “<p>” and “</p>” only

【讨论】:

【参考方案8】:

你可以将你的字符串包装在一个 jQuery 对象中:

var removeElements = function(text, selector) 
    var wrapped = $("<div>" + text + "</div>");
    wrapped.find(selector).remove();
    return wrapped.html();


var removedPString = removeElements("<p>Hi there</p> ~ wifi free <p>this is test</p> ~ breakfast free <p>This is another test</p>", "p");

【讨论】:

这不起作用,因为它不仅会删除标签,还会删除标签内的文本 我已经用过它了。

以上是关于如何从字符串中删除所有html标签[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用c#从文本中删除html标签[重复]

使用java从字符串中删除html标签[重复]

如何从 html 中删除特定标签 [重复]

从C#中的Html字符串中删除不必要的标签[重复]

Python/BeautifulSoup - 如何从元素中删除所有标签?

想要删除任何 HTML 标签 [重复]