首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去掉html字符串中所有不需要的标签,但保留JS中的空格

去掉html字符串中所有不需要的标签,但保留JS中的空格
EN

Stack Overflow用户
提问于 2015-08-05 18:36:41
回答 2查看 1.1K关注 0票数 0

我试图剥离我的html内容的所有不需要的标签,只返回基本格式的文本(ul,b,u,p等)或只返回纯文本(但保留新行,间距等),但是我在创建catch all解决方案时遇到了麻烦,它可以让我保留我粘贴的内容的结构。

示例字符串:

代码语言:javascript
复制
    <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>
EN

回答 2

Stack Overflow用户

发布于 2015-08-05 18:42:54

下面是一个简单的JavaScript解决方案,可以从HTML中删除所有span元素,但保留其内部内容:

代码语言:javascript
复制
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标记以及pbulli标记,但保留其内部内容:

代码语言:javascript
复制
$("span, p, b, ul, li").contents().unwrap();

另请参阅:Remove a HTML tag but keep the innerHtml

还可以注意到,每当您有两个或更多连续空格时,现代浏览器通常会在它们显示时将这些空格截断为一个空格。如果您希望将空格保留为多个空格,我可以将常规键入的空格"“字符替换为"&nbsp;”编码的空格。普通的JavaScript有一个字符串替换方法,如果需要,你可以使用它。

编辑:如果您希望删除JavaScript字符串中的所有HTML标记,请尝试以下操作:

代码语言:javascript
复制
myString.replace(/<(?:.|\n)*?>/gm, '');

另请参阅:Strip HTML from Text JavaScript

票数 0
EN

Stack Overflow用户

发布于 2016-06-15 00:39:52

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

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

我不认为它是最优雅的,但它似乎工作得相当稳定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31830097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档