Flupp! -eine Textdatei...

Feldhofe

Erfahrenes Mitglied
Hallo allerseits!

Ich habe eine Textdatei, die sieht wie folgt aus:
------------
Atomic Kitten|You are|001
Atomic Kitten|Whole again|002
A-Teens|Sugar Rush|003
A-Teens|Floorfiller|004
Loona|Rhythym of the Night|005
Corona|Rhythm of the Night|006
------------

Ich brauche einfach eine Suchfunktion, diese soll als Ergebis immer die passende Zahl am Ende der Zeile ausgeben.

Wenn z.B. die Suchanfrage "Atomic Kitten" lautet, soll als Ergebnis 001 und 002 heraus kommen.

Wenn die Anfrage "Rhythm of the Night" ist, soll das Ergebis 005 und 006 lauten usw.

Alles klar?
Freue mich auf Eure Antworten!!!

Gruß Feldhofe
 
Sicher, das geht schon mit mySQL (so läuft es auch bisher), nur hiermit geht es schneller, weil der mySQL-Server ziemlich lahm ist.

Vielleicht kann mir da ja jemand weiter helfen?
Natürlich soll das nicht für mich selber sein, sondern für eine Homepage. ;)

Gruß Feldhofe

ps: sieh mal an so klein ist die welt... so lernt man sich kennen... bin immer auf deiner seite und such mir songtecte raus (wenn ich sie denn mal brauch) :)
Tja -kannst mal sehen! :-) Als Insider weißt du jetzt auch, dass bald eine noch bessere Version 6 online geht... ;)
 
Zuletzt bearbeitet:
PHP:
$datei = file("datei.txt");
$ergebnis = array();

$suchstring = $_GET["suchstring"]; // <-- geht natürlich auch anders!

for ($i=0; $i<count($datei); $i++) {
    $schonda = 0;
    $datatmp = explode("|", $datei[$i]);
    for ($j=0; $j<2; $j++) {
        if (ereg($suchstring, $datatmp[$j])) $schonda = 1;
    }
    if ($schonda != 0)
        $ergebnis[] = $datatmp[2];
}

if (count($ergebnis) == 0) {
    echo "Nix überinstimmendes gefunden!";
} else {
    echo "An folgenden Stellen ist der Suchstring zu Finden:<br>\n";
    foreach($ergebnis as $erge) echo "&nbsp;".$erge."<br>\n";
}

Ungetestet, abba müsste gehen

<edit>Ok, es gehjt nicht! :) Werd abba versuchen, es zum laufen zu bringen!

DOCH! Es funzt! Falls du nicht willst, dass Gros und Kleinschreibung berücksichtigt wird, beutze einfach eregi statt ereg!
 
Zuletzt bearbeitet von einem Moderator:
Hey cool -danke!!!
Würde sowas eigentlich auch gehen, dass z.B. eine Suchanfrage "atomic whole" zur entsprechenden Zahl für "Atomic Kitten - Whole again" führt (also zwei nicht aufeinanderfolgende Worte)??

Feldhofe
 
wenn du glück hast geht das :

$datei = "text.txt";
$suche = "Kitten";

exec("grep ".$suche." ".$datei." | cut -d\| -f2",$erg);

for ($lo=0;$lo<sizeof($erg);$lo++) {
echo "$erg[$lo]<br>";
}
 
Neee...das geht leider nicht!
Als Ergebnis wird immer der zweite Wert (also der Titel des Liedes ausgegeben!)

Feldhofe
 
DOCH! Es funzt! Falls du nicht willst, dass Gros und Kleinschreibung berücksichtigt wird, beutze einfach eregi statt ereg!
hmm bei mir funktioniert es nicht da mein code:

suche.html :

PHP:
<html>
<head>
<title>script</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<div align="center">
  <form name="searchid" method="post" action="suche1.php">
    suche: 
    <input type="text" name="textfield">
    <input type="submit" name="submit" value=".send">
  </form>
</div>
</body>
</html>

suche1.php :
PHP:
<?
$datei = file("songs.inc");
$ergebnis = array();

$suchstring = $_GET["searchid"];

for ($i=0; $i<count($datei); $i++) {
    $schonda = 0;
    $datatmp = explode("|", $datei[$i]);
    for ($j=0; $j<2; $j++) {
        if (ereg($suchstring, $datatmp[$j])) $schonda = 1;
    }
    if ($schonda != 0)
        $ergebnis[] = $datatmp[2];
}

if (count($ergebnis) == 0) {
    echo "Nix überinstimmendes gefunden!";
} else {
    echo "An folgenden Stellen ist der Suchstring zu Finden:<br>\n";
    foreach($ergebnis as $erge) echo "&nbsp;".$erge."<br>\n";
}
?>

songs.inc :

PHP:
rofl|moep|001
lol|toll|002
muh|kuh|003

wo liegt der fehler bei mir kommt nämlich immer nur:

"Nix überinstimmendes gefunden!"
 
hat jemand ne ahnung wie ich auslese wieviele zeilen die textdatei hat? also das da zum beispiel steht: zur zeit befinden sich XXX einträge in der datenbank"
 
Nein, das habe ich schon zum Laufen bekommen!
Habe es etwas verändert und die Textdatei nur noch mit zwei Varaiblen laufen lassen (siehe unten).

Die Frage war nur, ob man es auch hinbekommt, dass solche Suchanfragen gehen:

"Atomic you are" --> 001
"A-Teens Rush" --> 003
"Rhythm Night" --> 005, 006

Also dass IRGENDWELCHE Wörter gesucht werden, nicht unbedingt zwei aufeinander folgende!

Feldhofe
------------
Atomic Kitten You are|001
Atomic Kitten Whole again|002
A-Teens Sugar Rush|003
A-Teens Floorfiller|004
Loona Rhythm of the Night|005
Corona Rhythm of the Night|006
------------
PHP:
$datei = file("interpretenliste.txt");
$ergebnis = array();

$suchstring = 'atomic kitten whole';

for ($i=0; $i<count($datei); $i++) {
    $schonda = 0;
    $datatmp = explode("|", $datei[$i]);
    for ($j=0; $j<2; $j++) {
        if (eregi($suchstring, $datatmp[$j])) $schonda = 1;
    }
    if ($schonda != 0)
        $ergebnis[] = $datatmp[1];
}

if (count($ergebnis) == 0) {
    echo "Nix überinstimmendes gefunden!";
} else {
    echo "An folgenden Stellen ist der Suchstring zu Finden:<br>\n";
    foreach($ergebnis as $erge) echo "&nbsp;".$erge."<br>\n";
}
 
Zurück