# phpman > man > HTML::Filter(3pm)

## NAME
    [HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown) - Filter HTML text through the parser

## NOTE
    This module is deprecated. The "[HTML::Parser](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AParser/markdown)" now provides the functionally of "[HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown)"
    much more efficiently with the "default" handler.

## SYNOPSIS
     require [HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown);
     $p = [HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown)->new->parse_file("index.html");

## DESCRIPTION
    "[HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown)" is an HTML parser that by default prints the original text of each HTML element
    (a slow version of [cat(1)](https://www.chedong.com/phpMan.php/man/cat/1/markdown) 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.

    "[HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown)" is a subclass of "[HTML::Parser](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AParser/markdown)". 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 [HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown);
      @ISA=qw([HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown));
      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 [HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown);
      @ISA=qw([HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown));
      sub start
      {
         my $self = shift;
         $self->{table_seen}++ if $_[0] eq "table";
         $self->[SUPER::start](https://www.chedong.com/phpMan.php/perldoc/SUPER%3A%3Astart/markdown)(@_);
      }

      sub end
      {
         my $self = shift;
         $self->[SUPER::end](https://www.chedong.com/phpMan.php/perldoc/SUPER%3A%3Aend/markdown)(@_);
         $self->{table_seen}-- if $_[0] eq "table";
      }

      sub output
      {
          my $self = shift;
          unless ($self->{table_seen}) {
              $self->[SUPER::output](https://www.chedong.com/phpMan.php/perldoc/SUPER%3A%3Aoutput/markdown)(@_);
          }
      }

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

      package FilterIntoString;
      require [HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown);
      @ISA=qw([HTML::Filter](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AFilter/markdown));
      sub output { push(@{$_[0]->{fhtml}}, $_[1]) }
      sub filtered_html { join("", @{$_[0]->{fhtml}}) }

## SEE ALSO
    [HTML::Parser](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AParser/markdown)

## 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.

