#!/usr/bin/perl use CGI::Carp qw(fatalsToBrowser); use strict; use warnings; use CGI; use File::Find; use HTML::Parser; my $cgi = CGI->new(); print $cgi->header(-type => 'text/plain'); my %params = $cgi->Vars(); my $string = ''; my $title = ''; my $basedir = '/home/netzgrafik/www.lottermoser.at/test/'; my $base_url = 'http://www.lottermoser.at/'; my $hp_title = 'Alu - Lottermoser'; # hier noch den Pfad zur Vorlage eintragen my $template = ''; my @files = (); find(\&find_files,$basedir); my ($includes) = search($params{terms},\@files); print_html($base_url,$template,$hp_title,$params{terms},$includes); sub find_files{ push(@files,$File::Find::name) if(-f $File::Find::name && $_ =~ /\.htm$/); } sub print_found{ my ($base,$template,$title,$terms,$hashref) = @_; my $content = ''; { local $/; open(my $fh,'<',$template) or die $!; $content = <$fh>; close $fh; } my $html = '
\n Such Information:


netzgrafik.com.\n~; $content =~ s/\$Titel/$title/; $content =~ s/\$Message/$html/; print $content; } sub search{ my ($termsstring,$files) = @_; my @terms = split(/\s+/,$termsstring); my $parser = HTML::Parser->new( api_version => 3, start_h => [\&start,"self,tagname,attr"], text_h => [\&text,"self,dtext"], end_h => [\&end,"self,tagname"]); $parser->{divs} = 0; my %include; for my $html_file(@$files){ $string = ''; $title = ''; $parser->parse_file($html_file); foreach my $term (@terms) { $term = umlauts($term); # hier wurde noch das "i" angefügt für "ignore case" also # matching ohne Berücksichtigung von Groß- und Kleinschreibung if ($string =~ /$term/i) { $include{$html_file} = $title; last; } } } return \%include; } sub start{ my ($self,$tag,$attr) = @_; if($tag eq 'div' && $attr->{class} eq 'scroll'){ $self->{search} = 1; } if($tag eq 'div' and $self->{search}){ $self->{divs}++; } if($tag eq 'title'){ $self->{title} = 1; } } sub text{ my ($self,$dtext) = @_; $string .= $dtext if($self->{search}); $title = $dtext if($self->{title}); } sub end{ my ($self,$tag) = @_; if($tag eq 'div' and $self->{search}){ $self->{divs}--; } if($self->{divs} == 0){ $self->{search} = 0; } if($tag eq 'title'){ $self->{title} = 0; } } sub umlauts{ my ($term) = @_; $term=~ s/&”/ä\;/g; $term=~ s/¾/Ä\;/g; $term=~ s/&–/ö\;/g; $term=~ s/÷/Ö\;/g; $term=~ s/&¸/ü\;/g; $term=~ s/Ð/Ü\;/g; $term=~ s/þ/ß\;/g; return $term; }