【问题标题】:Cutting out a section of HTML without using regex?在不使用正则表达式的情况下剪切一段 HTML?
【发布时间】:2021-06-14 10:38:48
【问题描述】:

我正在尝试从某些 HTML 中删除一个部分。这是我正在使用的示例(某些特定的 div id 可能会更改,但想法就在这里):

Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir="ltr">---------- Forwarded message ---------<br>data data data<br></div><br><br>
<div id="itemID" style="margin:0px"><div style="margin:0px">
<html i want to keep etc>

我想把它改成这样:

<div id="itemID" style="margin:0px"><div style="margin:0px">
<html i want to keep etc>

作为另一个例子,这个 HTML:

Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir="headerline">---------- Forwarded message ---------<br>data data data<br></div><br><br>
<div id="itemID2" style="margin:10px"><div style="margin:10px">
<html i want to keep etc>

应该变成这样的样子:

<div id="itemID2" style="margin:10px"><div style="margin:10px">
<html i want to keep etc>

换句话说,在第一行或第二行中查找Forwarded message,如果找到,则删除直到并包括该行的每一行。现在工作的 RegEx 看起来像这样:

var HTMLbodynew = HTMLbody.replace(/\n.+Forwarded Message.+\n/,"");

但是,正如臭名昭著的 Stackoverflow post 中所述,我不应该使用正则表达式来解析 HTML。没有正则表达式有没有办法做到这一点?

【问题讨论】:

    标签: javascript html-parsing


    【解决方案1】:

    尝试使用这个

    document.querySelector("div[dir='ltr']").remove();
    
    for (const brElement of document.querySelectorAll("br")) {
        brElement.remove();
    }
    

    【讨论】:

    • 谢谢,但不幸的是,并不是每个需要处理的 HTML 文档都有“ltr”(此外,我以后要保留的 html 中的一些 div 有“ltr”)。我已经更新了这个问题,试图让这一点更清楚。
    猜你喜欢
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2010-12-19
    • 2011-12-29
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多