Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^4: Looking for a module that strips an HTML tag and its associated 'TEXT'

by nysus (Parson)
on Jul 29, 2020 at 13:56 UTC ( [id://11119970]=note: print w/replies, xml ) Need Help??


in reply to Re^3:Looking for a module that strips an HTML tag and its associated 'TEXT'
in thread Looking for a module that strips an HTML tag and its associated 'TEXT'

It turns out it doesn't even do what I need. And now I just tried https://metacpan.org/pod/HTML::Scrubber and it doesn't seem to work, either.

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest Vicar";
$nysus = $PM . ' ' . $MCF;
Click here if you love Perl Monks

Replies are listed 'Best First'.
Re^5: Looking for a module that strips an HTML tag and its associated 'TEXT'
by marto (Cardinal) on Jul 29, 2020 at 14:02 UTC

      I want the code to pass these simple tests:

      # eliminate_tags is(eliminate_tags("url: <a href=\"http://example.com/\">http://example +.com/</a>", 'a'), "url: "); is(eliminate_tags("<div>\n <p>hoge foo.</p>\n <p>bar tarao.</p>\n</d +iv>", 'p'), "<div>\n \n \n</div>"); # eliminate_links is(eliminate_links("url: <a href=\"http://example.com/\">http://exampl +e.com/</a>"), "url: "); is(eliminate_links("<div>\n <p>hoge foo.</p>\n <p>bar tarao.</p>\n</ +div>"), "<div>\n <p>hoge foo.</p>\n <p>bar tarao.</p>\n</div>");

      $PM = "Perl Monk's";
      $MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest Vicar";
      $nysus = $PM . ' ' . $MCF;
      Click here if you love Perl Monks

        This looks like a very simple DOM manipulation: delete nodes from the DOM. I can do that in Firefox's developer tools. I am sure any DOM manipulator can do that. Specifically the Mojo::DOM suggested by marto should also be able to do it - but I have not used it before. In short: parse your html and convert it to a DOM, which is a Tree of html-tag nodes. Locate the node by xpath or other exotic selector. Zap the node and/or its children. Work at as high level as you can with this one because the spec will continually change and change and it will come to bite you.

        Edit: I am not sure if the process of HTML -> DOM -> manipulate -> HTML will retain exactly the white spaces from the original HTML between tags as it seems you want to keep them given the test cases you provided.

        Add: a regex "is simpler" but it isn't.

        bw, bliako

        And did you look at my earlier suggestion?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11119970]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2024-03-28 11:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found