从html字符串中删除所有不需要的标记但保留JS中的空格

时间:2015-08-05 10:36:41

标签: javascript html css angularjs

我试图删除所有不需要的标签的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>

2 个答案:

答案 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标记,以及pb,{{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标记,请尝试以下操作:

&nbsp;

另请参阅:Strip HTML from Text JavaScript

答案 1 :(得分:0)

我能想出的唯一解决方案是......

'Name<br /><a href="something">here.</a>'.replace(/(<([^>]+)>)/ig,' ').replace(/\s{2,}/gi, ' ').trim()

我不认为它是最优雅的,但它确实看起来非常一致。

相关问题