如何从字符串中删除所有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
必须用引号引起来。
第三个替换('</p>'/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】:根据要求提供您的特定字符串(删除 <p>
元素):
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标签[重复]的主要内容,如果未能解决你的问题,请参考以下文章