我试图删除所有不需要的标签的html内容,只返回带有基本格式(ul,b,u,p等)的文本或只是纯文本(但保留新行,间距等)但是我遇到了麻烦创建一个捕获所有解决方案,让我保持我粘贴的内容的结构。
示例字符串:
<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>
答案 0 :(得分:0)
这是一个简单的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
,{{1} },ul
标记,但保留其内在内容:
li
另请参阅:Remove a HTML tag but keep the innerHtml
值得注意的是,只要您有两个或更多连续的空格,现代浏览器通常会在显示时将这些空格截断为一个空格。如果您想将间距保留为多个空格,我会替换常规类型的空格&#34; $("span, p, b, ul, li").contents().unwrap();
&#34;带有&#34; &#34;的字符HTML编码空间。普通的JavaScript有一个字符串替换方法,如果需要,可以使用它。
编辑:如果您希望从JavaScript字符串中删除所有HTML标记,请尝试以下操作:
答案 1 :(得分:0)
我能想出的唯一解决方案是......
'Name<br /><a href="something">here.</a>'.replace(/(<([^>]+)>)/ig,' ').replace(/\s{2,}/gi, ' ').trim()
我不认为它是最优雅的,但它确实看起来非常一致。