Nicht mehr ganz neu hier
Hallo,
ich habe ein Script eingebaut welches auf den eigenen Seiten nach Begriffen sucht. Das Script funktioniert auch sehr gut, leider findet es keine Sonderzeichen wie ö,ä,ü.
Meine PHP-Kentnisse sind nicht besonders und ich finde den Fehler nicht.
Vielleicht ist hier ein Profi der mir weiterhelfen kann.:'(
ich habe ein Script eingebaut welches auf den eigenen Seiten nach Begriffen sucht. Das Script funktioniert auch sehr gut, leider findet es keine Sonderzeichen wie ö,ä,ü.
Meine PHP-Kentnisse sind nicht besonders und ich finde den Fehler nicht.
Vielleicht ist hier ein Profi der mir weiterhelfen kann.:'(
PHP:
<?
// error_reporting(0);
########### Hier folgen die Einstellungen ###########
$max_suchwoerter=3; # Maximale Anzahl der Suchwörter, die wahrgenommen werden
$treffer_pro_seite=10; # Wie viele Treffer werden pro Ergebnisseite angezeigt?
$endungen=array("html","htm","php","phtml"); # Dateien mit welchen Endungen werden durchsucht?
$pfade_gesamt="./,html/"; # Adressen (relativ zum Suchmaschinennskript) der zu durchsuchenden Ordner (durch Kommata trennen!)
$max_stelle=200; # Maximale (ungefähre) Länge (in Zeichen) der ersten gefundenen Textstelle
$mehr_laenge=200; # Maximale (ungefähre) Länge (in Zeichen) des Strings für weitere Vorkommnisse
########### Ab hier folgt die Suche #######
// Umstellung auf reg_glo=Off Anfang
$PHP_SELF = $_SERVER['PHP_SELF'];
//$SERVER_NAME = $_SERVER['SERVER_NAME'];
$SERVER_NAME = "hier die Page rein";
foreach($_POST as $key => $value) {
$$key = isset($_POST[$key]) ? $_POST[$key] : "";
}
foreach($_GET as $key => $value) {
$$key = isset($_GET[$key]) ? $_GET[$key] : "";
}
// Umstellung auf reg_glo=Off ENDE
if (!isset($grossschreibung)) { $grossschreibung=0; }
if (!isset($ganzewoerter)) { $ganzewoerter=0; }
if (!isset($index)) { $index=0; }
$suchtext=trim(stripslashes($suchtext));
if ($grossschreibung==0) { $suchtext=strtolower($suchtext); }
$suchtext=ereg_replace(","," ",$suchtext);
$suchtext2=array(); $suchwoerter=array();
$suchtext2=explode(" ",$suchtext);
foreach ($suchtext2 as $einwort)
{
if (($einwort!="") && (count($suchwoerter)<=($max_suchwoerter-1)) && (!in_array($einwort,$suchwoerter)))
{ array_push($suchwoerter,$einwort); }
}
$suchtext=implode(" ",$suchwoerter);
?>
<form action="<? echo "$PHP_SELF"; ?>" method="post">
<table width="500" cellpadding="5" cellspacing="0" border="0" bgcolor="#999999" align="center">
<tr>
<td align="right">
<?
echo "<input type=\"text\" name=\"suchtext\" size=\"";
$browser=$HTTP_USER_AGENT;
if (1*strpos(strtolower($browser),"msie")>0) { echo "25"; } else { echo "14"; }
echo "\" value=\"".$suchtext."\"><br><br>";
?>
<input type="submit" value=" suchen ">
</td>
<td>
<b>Groß- und Kleinbuchstaben</b><br>
<input type="radio" name="grossschreibung" value="1" <? if ($grossschreibung==1) echo "checked"; ?>>unterscheiden<br>
<input type="radio" name="grossschreibung" value="0" <? if ($grossschreibung==0) echo "checked"; ?>>nicht unterscheiden
</td>
<td>
<b>Art der Suche</b><br>
<input type="radio" name="ganzewoerter" value="1" <? if ($ganzewoerter==1) echo "checked"; ?>>
nur ganze Wörter<br>
<input type="radio" name="ganzewoerter" value="0" <? if ($ganzewoerter==0) echo "checked"; ?>>Wortteile
</td>
</tr>
</table>
</form>
<?
if ($suchtext!="") { start(); ausgabe(); }
function start()
{
global $suchwoerter,$grossschreibung,$ganzewoerter,$dateinummer,$treffer,$max_stelle,$mehr_laenge;
global $endungen,$pfade_gesamt;
$dateinummer=0;
$treffer=array();
$pfade=array(); $pfade=explode(",",$pfade_gesamt);
foreach ($pfade as $pfad)
{
$ordner=opendir($pfad);
while ($eintrag=readdir($ordner))
{
$name=$pfad.$eintrag;
$dateiname=explode(".",$eintrag);
if (in_array($dateiname[1],$endungen))
{
$anzahl=0;
$schluss=0;
$gefundene_woerter=array();
$datei=fopen($name,"r");
while (!feof($datei))
{
$zeile=fgetss($datei,10000,"");
if ($grossschreibung==0) { $zeile=strtolower($zeile); }
$woerter=explode(" ",$zeile);
foreach ($woerter as $wort)
{
foreach ($suchwoerter as $suchwort)
{
### ganze Wörter ###
if ($ganzewoerter==0)
{
if (strstr($wort,$suchwort))
{
if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); }
$anzahl++;
$treffer["vorkommnisse"][$dateinummer]++;
if ($anzahl==1)
{
$treffer["datei_url"][$dateinummer]=$name;
$position=strpos($zeile,$wort);
$wortlaenge=strlen($wort);
$zeilenlaenge=strlen($zeile);
if ($zeilenlaenge>$max_stelle)
{
$lside=$position-(($max_stelle-$wortlaenge)/2);
$rside=$lside+$max_stelle;
if ($lside<0) { $rside=$rside-$lside; $lside=0; }
if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; }
}
else { $lside=0; $rside=$zeilenlaenge; }
$stelle=substr($zeile,$lside,$rside-$lside);
$stelle=ereg_replace($wort,"<span class=\"markierung\">".$wort."</span>",$stelle);
$stelle="...".$stelle."...";
$treffer["textstelle"][$dateinummer]=$stelle;
}
else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; }
else if ($anzahl>2)
{
if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; }
else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} }
}
}
}
### ganze Wörter ENDE ###
### Wortteile ###
else
{
if ($wort==$suchwort)
{
if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); }
$anzahl++;
$treffer["vorkommnisse"][$dateinummer]++;
if ($anzahl==1)
{
$treffer["datei_url"][$dateinummer]=$name;
$position=strpos($zeile,$wort);
$wortlaenge=strlen($wort);
$zeilenlaenge=strlen($zeile);
if ($zeilenlaenge>$max_stelle)
{
$lside=$position-(($max_stelle-$wortlaenge)/2);
$rside=$lside+$max_stelle;
if ($lside<0) { $rside=$rside-$lside; $lside=0; }
if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; }
}
else { $lside=0; $rside=$zeilenlaenge; }
$stelle=substr($zeile,$lside,$rside-$lside);
$stelle=" ".$stelle." ";
$stelle=ereg_replace(" ".$wort." "," <span class=\"markierung\">".$wort."</span> ",$stelle);
$stelle="...".$stelle."...";
$treffer["textstelle"][$dateinummer]=$stelle;
}
else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; }
else if ($anzahl>2)
{
if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; }
else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} }
}
}
}
### Wortteile ENDE ###
}
}
}
fclose($datei);
$treffer["woerter"][$dateinummer]=count($gefundene_woerter);
$treffer["mehr"][$dateinummer]=$mehr;
if (count($gefundene_woerter)>0) { $dateinummer++; }
}
}
closedir($ordner);
}
}
function ausgabe()
{
global $treffer,$dateinummer,$PHP_SELF,$index,$SERVER_NAME,$treffer_pro_seite,$suchwoerter,$suchtext,$grossschreibung,$ganzewoerter;
echo "<table width=\"500\" border=\"0\" align=\"center\"><tr><td>\n";
echo "<span style=\"font-size:13pt\"><b>Ergebnisse der Suche:</b></span><br><br>\n";
$treffer_anzahl=count($treffer["datei_url"]);
if ($treffer_anzahl==0) { echo "<span style=\"font-size:13pt\"><b><center><br><br>Leider nichts gefunden<br><br></center></b></span></td></tr></table>\n"; }
else
{
@array_multisort($treffer["woerter"],SORT_DESC,$treffer["vorkommnisse"],SORT_DESC,$treffer["datei_url"],$treffer["textstelle"],$treffer["mehr"]);
$suchtext=ereg_replace(" ",", ",$suchtext);
if (count($suchwoerter)>1) { echo "Gesuchte Wörter: "; } else { echo "Gesuchtes Wort: "; }
echo "$suchtext<br><br>\n";
$anfang=$index*$treffer_pro_seite+1;
$ende=$anfang+$treffer_pro_seite-1; if ($ende>$treffer_anzahl) { $ende=$treffer_anzahl; }
echo "<b>Treffer $anfang-$ende von insgesamt $treffer_anzahl Treffern, beste Treffer zuerst:<br><br>\n";
echo "</td></tr></table>\n";
for ($k=0;$k<$treffer_pro_seite;$k++)
{
$i=$index*$treffer_pro_seite+$k;
$platz=$i+1;
if ($platz<=$ende)
{
echo "<table width=\"580\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">\n";
$t=1;
$treffer["datei_url"][$i]=ereg_replace("\./","",$treffer["datei_url"][$i]);
$datei=fopen($treffer["datei_url"][$i],"r");
while ($t<7)
{
$zeile=fgetss($datei,1000,""); $zeile=trim($zeile);
if ($zeile!="")
{
echo "<tr><td height=\"16\" colspan=\"2\">";
echo "<span class=\"t_nummer\">".$platz.".</span> <a href=\"".$treffer["datei_url"][$i]."\"><b>".$zeile."</b></a>";
break;
}
$t++;
}
fclose($datei);
if ($treffer["woerter"][$i]==1) { $woerter="Wort"; } else { $woerter="Wörter"; }
if ($treffer["vorkommnisse"][$i]==1) { $vorkommnisse="Vorkommnis"; } else { $vorkommnisse="Vorkommnisse"; }
echo "<p style=\"margin-top:0pt; margin-bottom:0pt\" align=\"justify\">\n";
echo $treffer["textstelle"][$i]."<br>\n";
echo "<small><b>Weitere Vorkommnisse: </b>".$treffer["mehr"][$i]."</small></p></td></tr>\n";
echo "<tr><td><a href=\"