简体   繁体   English

从字符串中删除强标签及其内容

[英]remove strong tag and its content from string

I'm having below string with this html, i'm wondering how can i remove/filter all strong tags and its text from the string? 我在此html的字符串下面,我想知道如何从字符串中删除/过滤所有强标签及其文本?

html html

<p>
    <br>
    2-3 spsk græsk yoghurt, gerne 10 % 
    <strong>Dressing: </strong>
    <br>
    1 lille spsk god mayonnaise
    <br>
    1-2 tsk æbleeddike 
    <br>
    1-2 tsk honning 
    <br>
    himalayasalt og friskkværnet hvid peber
    <br>
</p>

so far i have this, but only seem to remove strong tag if it is at the top 到目前为止,我有这个,但是似乎只有在顶部才删除强标签

var ingredientsArray = ingredients.split('<br>').map(it => it.trim()).filter(it => !!it && !it.startsWith('<strong>'));

You can use the DOM API for this: 您可以为此使用DOM API:

 function stripStrong(html) { var span = document.createElement('span'); span.innerHTML = html; [...span.getElementsByTagName('strong')].reverse().forEach( strong => strong.parentNode.removeChild(strong) ); return span.innerHTML; } var html = `<p> <br> 2-3 spsk græsk yoghurt, gerne 10 % <strong>Dressing: </strong> <br> 1 lille spsk god mayonnaise <br> 1-2 tsk æbleeddike <br> 1-2 tsk honning <br> himalayasalt og friskkværnet hvid peber <br> </p>`; console.log(stripStrong(html)); 

Note that this also works if the strong tag has attributes, styles, is nested with other strong tags, etc... something that regular expressions can have trouble with. 请注意,如果strong标签具有属性,样式,与其他strong标签嵌套等,这也适用。正则表达式可能会遇到麻烦。

Parsing the string as HTML would most likely be the way to go, depending on what the goal is ? 根据目标是什么,最有可能将字符串解析为HTML。

 var ingredients = '<p><br>2-3 spsk græsk yoghurt, gerne 10 % <strong>Dressing: </strong><br>1 lille spsk god mayonnaise<br>1-2 tsk æbleeddike <br>1-2 tsk honning <br>himalayasalt og friskkværnet hvid peber<br></p>'; var doc = new DOMParser().parseFromString(ingredients, 'text/html'); [].forEach.call(doc.querySelectorAll('strong'), function (item) { item.parentNode.removeChild(item); }); document.body.innerText = '<pre>' + doc.body.innerHTML + '</pre>'; 

与其尝试操纵字符串,不如将CSS规则应用于将其放入DOM的任何位置:

strong { display: none; }

You can use regex for this: 您可以为此使用正则表达式:

var ingredientsArray = ingredients.replace(/<strong>[\s\S]*?<\/strong>/g, '')
     .split('<br>').map(it => it.trim()).filter(Boolean);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM