Hallo!
Also jetzt hab ich das Script wieder soweit, dass es zumindest durchgeführt wird. Es sieht jetzt wie folgt aus:
Durchsuchbare Inhalte/ Dateien
@files = ('*.shtml','*.htm',
'*/*.shtml','*/*.htm',
'*/*/*.shtml','*/*/*.htm');
Nicht zu durchsuchende Dateien
$files_maynot = {
'site/bestaetigung.shtml' => 1
};
...
sub get_files
{
my @Files;
for(@files)
{
push @Files,glob($_);
}
my %Files = ();
$files_maynot =
{
'site/bestaetigung.shtml' => 1
};
sub collect_files()
{
my @collected_files;
foreach my $path (@files)
{
foreach my $file (glob($path))
{
push @collected_files unless $files_maynot->{$file};
}
}
}
return @collected_files;
}
sub search
{
Konvertiert mehrere Leerzeichen in eines:
$FORM{'terms'} =~ s/\s+/ /g;
$FORM{'terms'} = " $FORM{'terms'} ";
Konvertiert NOT-Statements in Minuszeichen:
$FORM{'terms'} =~ s/ not / -/ig;
Konvertiert AND-Statements in Pluszeichen:
$FORM{'terms'} =~ s/ and / +/ig;
OR-statements:
$FORM{'terms'} =~ s/ or / /ig;
Platzhalter:
$check = 'true' unless ($FORM{'terms'} =~ /\*/);
Gruppierte Einträge:
@terms = split(/"/,$FORM{'terms'});
$iterator = 0;
$FORM{'terms'} = "";
$placeholder = '%%%==%%%';
foreach $term (@terms)
{
if ($iterator == 1)
{$iterator--;}
else
{$iterator++;}
$term =~ s/ /$placeholder/g unless $iterator;
$FORM{'terms'} .= $term;
}
@terms = split(/\s+/,$FORM{'terms'});
foreach $term (@terms)
{
next if ($term eq '');
$term =~ s/$placeholder/ /g;
if ($term =~ /^+/)
{
$term =~ s/+//o;
$term = '\W' . $term. '\W' unless ($term =~ /^$/);
$term =~ s/^$//;
push(@required,$term);
$required_terms_present = "you bet";
}
elsif ($term =~ /^-/)
{
$term =~ s/-//o;
$term = '\W' . $term. '\W' unless ($term =~ /^$/);
$term =~ s/^$//;
push(@forbidden,$term);
$forbidden_terms_present = "fraid so";
}
else
{
$term = '\W' . $term. '\W' unless ($term =~ /^$/);
$term =~ s/^$//;
push(@optional,$term);
}
}
foreach $FILE (@FILES) ####### <==== Habs hier auch mit collected_files versucht!?
{
open(FILE,"$FILE");
@LINES = <FILE>;
close(FILE);
$string = join(' ',@LINES);
$string =~ s/\n//g;
Extrahiert Titel, sofern vorhanden:
if ($string =~ /<title>(.*)</title>/i)
{
$titles{$FILE} = $1;
for ($i=1;$i<$title_x;$i++)
{
$string .= $titles{$FILE};
}
}
$titles{$FILE} = $FILE unless $titles{$FILE};
Extrahiert Beschreibung, sofern vorhanden:
if ($string =~ /<meta\s+name="description"\s+content="(.*)>/i)
{
@cut = split(/">/,$1);
$description{$FILE} = $cut[0];
for ($i=0;$i<$description_x;$i++)
{
$string .= $description{$FILE};
}
}
else
{
$string2 = $string;
$string2 =~ s/<title>(.*)</title>//ig;
$string2 =~ s/<([^>]|\n)*>//g;
@words = split(/\s+/,$string2);
for ($i=0;$i<25;$i++)
{$description{$FILE} .= "$words[$i] ";}
$description{$FILE} .= "...";
}
Es werden aber keine Dateien mehr durchsucht - das heißt ich bekomm kein Suchergebnis, auch wenn Seiten zu den gesuchten Begriffen vorhanden sind.
Ich würd mich wirklich freuen, wenn Du mir da noch weiterhelfen könntest, ich plag mich schon seit 3 Tagen damit herum, aber ich schaff es einfach nicht. :(
Liebe Grüße,
sunny