我想从html中删除标签,但保留它的换行符。
我想要的行为就像在浏览器中复制文本并将其粘贴到记事本中一样。
例如,转换代码的代码:
<div>x1</div><div>x2</div>
至x1\nx2
<p>x1</p><p>x2</p>
至x1\nx2
<b>x1</b><i>x2</i>
至x1x2
x1<br>x2
至x1\nx2
删除所有标签不起作用(/<.*?>/g)。
还要创建一个虚拟&lt; div&gt;并设置为innertHTML
并读取textContent
将删除换行符。
任何帮助?
答案 0 :(得分:3)
这对你有用吗?这将用<br>
替换</div>
,</p>
和\n
的每一次出现,然后删除剩余的标记。它的傻瓜,但它至少是一个开始。
fixed = text_to_fix.replace(/<(?:br|\/div|\/p)>/g, "\n")
.replace(/<.*?>/g, "");
然而,这不适用于所有HTML。只是你提到的标签。
答案 1 :(得分:2)
尝试:
function strip_tags(str){
return str
.replace(/(<(br[^>]*)>)/ig, '\n')
.replace(/(<([^>]+)>)/ig,'');
}
var str = '<div>x1</div><div>x2</div><br>'+'<p>x1</p><p>x2</p>'+'<b>x1</b><i>x2</i>';
这将删除标记并用新行替换<br />
或<br>
,但为块元素添加新行需要相当长的时间才能找到解决方案。