Hallo alle zusammen! Ich habe folgendes Problem: Ich baue mir zur Zeit eine Suchmaschine, die eine Textdatei zeilenweise nach einem oder mehreren Begriffen durchsucht. Hier mal der Code:
<?php
if(!isset($_GET["do"]) OR $_GET["do"] !== "search") {
echo <<<eot
<h1>Suche</h1>
<form action="search@aw.php" method="GET">
<input type="hidden" name="do" value="search">
<input type="text" name="woerter" size="50"> <input type="submit" value="Suchen">
</form>
eot;
}elseif($_GET["woerter"] == "") {
echo <<<eot
<h1>Bitte eins oder mehrere Suchwörter eingeben!</h1>
<form action="search@aw.php" method="GET">
<input type="hidden" name="do" value="search">
<input type="text" name="woerter" size="50"> <input type="submit" value="Suchen">
</form>
eot;
}else {
$datei="datei.txt";//Name der Datei
$zeilen=file($datei);//Einlesen aller Zeilen in ein Array
$anzahl_zeilen=count($zeilen);//Wieviele Zeilen die Datei hat
$woerter=htmlentities(trim($_GET["woerter"]));//GET-->Var
$einzelwoerter=explode(" ", $woerter);//Trennung der Einzelwoerter am Leerzeichen
$anzahl_woerter=count($einzelwoerter);//Anzahl der Einzelwoerter
$match=0;
//Eigentliche Suchabfrage
for($x=0; $x<=$anzahl_zeilen-1; $x++) {
for($y=0; $y<=$anzahl_woerter-1; $y++) {
if(substr_count($zeilen[$x], $einzelwoerter[$y])) {
$save[$match]=$zeilen[$x];
$match++;
}
else {
$ter=0;
}
}
}
if($match==0 AND $ter==0) {
echo <<<eot
<h1>Keine Suchergebnisse...</h1>
<form action="search@aw.php" method="GET">
<input type="hidden" name="do" value="search">
<input type="text" name="woerter" size="50"> <input type="submit" value="Suchen">
</form>
eot;
}else {
$save=array_values(array_unique($save));
$matches=count($save);
echo "<h1>Ergebnisse</h1><b>$matches Treffer</b><br><br>";
for($z=0; $z<count($save); $z++) {
echo $save[$z]."<br>";
}
echo <<<eot
<form action="search@aw.php" method="GET">
<input type="hidden" name="do" value="search">
<input type="text" name="woerter" size="50"> <input type="submit" value="Suchen">
</form>
eot;
}
}
?>
Soweit, so gut. Aber ich will nun, dass diejenigen Zeilen, die mehr Treffer enthalten, zuerst angezeigt werden.
if(substr_count($zeilen[$x], $einzelwoerter[$y])) {
leider unterscheidet substr_count Groß- und Kleinschreibung. Ich brauche deshalb eine Funktion, die die Treffer pro Zeile mitzählt und das Array $save, in dem alle Trefferzeilen gespeichert sind, nach den Treffern absteigend sortiert. Hat jemand vielleicht eine Idee, wie ich das angehen könnte?