---
name: "PSP::HTML::Filter"
section: "3pm"
platform: "linux"
package: "libpsp-html-parser-perl"
version: "0.5.5.dfsg.1-0.1+b1"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/PSP::HTML::Filter"
---

# PSP::HTML::Filter(3pm)

Filter HTML text through the parser

## NAME

PSP::HTML::Filter - Filter HTML text through the parser

## NOTE

This module is deprecated. `"PSP::HTML::Parser"` now provides the functionally of `"PSP::HTML::Filter"` much more efficiently with the the `"default"` handler.

## SYNOPSIS

```
 require PSP::HTML::Filter;
 $p = PSP::HTML::Filter->new->parse_file("index.html");
```

## DESCRIPTION

`"PSP::HTML::Filter"` is an HTML parser that by default prints the original text of each HTML element (a slow version of [*cat*(1)](/cat/1.md) basically). The callback methods may be overridden to modify the filtering for some HTML elements and you can override *output()* method which is called to print the HTML text.

`"PSP::HTML::Filter"` is a subclass of `"PSP::HTML::Parser"`. This means that the document should be given to the parser by calling the `$p`-\>*parse()* or `$p`-\>*parse\_file()* methods.

## EXAMPLES

The first example is a filter that will remove all comments from an HTML file.  This is achieved by simply overriding the comment method to do nothing.

```
  package CommentStripper;
  require PSP::HTML::Filter;
  @ISA=qw(PSP::HTML::Filter);
  sub comment { }  # ignore comments
```

The second example shows a filter that will remove any \<TABLE\>s found in the HTML file.  We specialize the *start()* and *end()* methods to count table tags and then make output not happen when inside a table.

```
  package TableStripper;
  require PSP::HTML::Filter;
  @ISA=qw(PSP::HTML::Filter);
  sub start
  {
     my $self = shift;
     $self->{table_seen}++ if $_[0] eq "table";
     $self->SUPER::start(@_);
  }
  sub end
  {
     my $self = shift;
     $self->SUPER::end(@_);
     $self->{table_seen}-- if $_[0] eq "table";
  }
  sub output
  {
      my $self = shift;
      unless ($self->{table_seen}) {
          $self->SUPER::output(@_);
      }
  }
```

If you want to collect the parsed text internally you might want to do something like this:

```
  package FilterIntoString;
  require PSP::HTML::Filter;
  @ISA=qw(PSP::HTML::Filter);
  sub output { push(@{$_[0]->{fhtml}}, $_[1]) }
  sub filtered_html { join("", @{$_[0]->{fhtml}}) }
```

## SEE ALSO

PSP::HTML::Parser

## COPYRIGHT

Copyright 1997-1999 Gisle Aas.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
