我试图剥离我的html内容的所有不需要的标签,只返回基本格式的文本(ul,b,u,p等)或只返回纯文本(但保留新行,间距等),但是我在创建catch all解决方案时遇到了麻烦,它可以让我保留我粘贴的内容的结构。
示例字符串:
<p class="Bodytext" style="color: rgb(51, 51, 51);background-color: rgb(255, 255, 255);">
<span lang="EN-GB">Hello
<span class="Apple-converted-space"> world, </span>
<span class="Cross-reference">
<a href="" style="color: rgb(66, 139, 202);background-color: transparent;">Cough
</a>
</span>
<span class="Apple-converted-space"></span>and
<span class="Apple-converted-space"></span>
<span class="Cross-reference">
<a href="" style="color: rgb(66, 139, 202);background-color: transparent;">Feverish - risk assessment</a>
</span>.
<span class="Apple-converted-space"></span>
</span>
</p>
<p class="Bodytext" style="color: rgb(51, 51, 51);background-color: rgb(255, 255, 255);">
<span lang="EN-GB">Fin. </span>
</p>发布于 2015-08-05 18:42:54
下面是一个简单的JavaScript解决方案,可以从HTML中删除所有span元素,但保留其内部内容:
var span = document.getElementsByTagName('span');
while(span.length) {
var parent = span[ 0 ].parentNode;
while( span[ 0 ].firstChild ) {
parent.insertBefore( span[ 0 ].firstChild, span[ 0 ] );
}
parent.removeChild( span[ 0 ] );
}您还可以更简单地使用jQuery来完成此操作,如本例所示,它将删除span标记以及p、b、ul和li标记,但保留其内部内容:
$("span, p, b, ul, li").contents().unwrap();另请参阅:Remove a HTML tag but keep the innerHtml
还可以注意到,每当您有两个或更多连续空格时,现代浏览器通常会在它们显示时将这些空格截断为一个空格。如果您希望将空格保留为多个空格,我可以将常规键入的空格"“字符替换为" ”编码的空格。普通的JavaScript有一个字符串替换方法,如果需要,你可以使用它。
编辑:如果您希望删除JavaScript字符串中的所有HTML标记,请尝试以下操作:
myString.replace(/<(?:.|\n)*?>/gm, '');发布于 2016-06-15 00:39:52
我唯一能想到的解决方案就是...
'Name<br /><a href="something">here.</a>'.replace(/(<([^>]+)>)/ig,' ').replace(/\s{2,}/gi, ' ').trim()
我不认为它是最优雅的,但它似乎工作得相当稳定。
https://stackoverflow.com/questions/31830097
复制相似问题