Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Such Script für txt





Frage

Hallo. Ich habe ein Script welches eine Textdatei durchsuchen sollte und wenn das gesuchte in der Datei gefunden wurde soll halt was spezielles ausgeführt werden. Das Script zeigt nur das an was ich möchte wenn ich nach dem ersten Wort in der Textdatei suche. Wie bekomme ich das hin das jede Zeile durchsucht und verarbeitet wird? [code]<?php if(isset($_POST[´search´])) { $fp = fopen("./index.txt","r"); // Datei öffnen if ($fp) { while(!feof($fp))//Solange bis der Dateizeiger am Ende der Datei ist { $zeile = fgets($fp,100);//Einlesem der Zeilen if(trim($zeile) == $look) { echo ´<body link="#00FF00" vlink="#00FF00" alink="#00FF00" text="#000032" bgcolor="#FF7F50" oncontextmenu="return false">´; echo ´<center><iframe src ="./index2.php?x=´.$look.´"width="560" noresize scrolling=no FRAMEBORDER=NO BORDER=0 FAMESPACING=0 height="315"></iframe> </center><br>´; exit; } if(trim($zeile) != $look) { echo ´<body link="#00FF00" vlink="#00FF00" alink="#00FF00" text="#000032" bgcolor="#FF7F50" oncontextmenu="return false">´; echo "Das gesuchte Fahrzeug konnte leider nicht gefunden werden!"; exit; } } fclose($fp); // Datei schließen } else { echo "Datei wurde nicht gefunden"; // Sollte Datei nicht vorhanden sein } } ?> <body link="#00FF00" vlink="#00FF00" alink="#00FF00" text="#000032" bgcolor="#FF7F50" oncontextmenu="return false"> <form enctype="multipart/form-data" method="POST" action="./look.php"> Fahrzeug suchen:<br> <input name="look" size="40"><br> <input type="submit" value="Suchen" name="search"> </form> [/code]

Antwort 1 von SkyBenni

Hallo!

Erstmal würde ich die POST Variablen als solche kennzeichen bzw mit Array verwenden, einfach um das Script auch auf Servern bei denen register_globals auf 0 steht laufen zu lassen können.

-> $_POST[´look´]

Dann würde ich einfach jedes Wort einer Zeile in ein Array schreiben und dann bei jeden Wert des Arrays gegenüber dem Suchwert überprüfen.


$suche_true = 0;

while(!feof($fp))
{
  $zeile = fgets($fp,100);
  $wort = explode(" ",$zeile);

   for ($k=1; $k<count($wort); $k++)
   { 
       if ($wort[$k] == $_POST[´look´]
       {
           $suche_true = 1;
       }
    }
}


switch($suche_true)
{
    case ´1´:
       $return = ´Suche erfolgreich! <br /><iframe [...]´;
       break;
   
   case ´0´:
       $return = ´Keine Übereinstimmungen gefunden!´;
       break;
}

echo($return);



Ungetestet! Sollte es Fragen geben:
skybenni [AT] crystal-design [DOT] net

SkyBenni

P.S.: Mir sei verziehen, dass ich nicht durchkommentiert habe. Allerdings ruft der Strand....

Antwort 2 von SkyBenni

Sry, nochmal querdrüber gelesen,

 if ($wort[$k] == $_POST[´look´] )

Dort hat auf jeden Fall eine Klammer gefehlt.

  for ($k=0; $k<count($wort); $k++) 

Und das Array beginnt auch nicht bei 1 sondern bei 0.


Peinlich. Sehr peinlich.
hoffe dass ich nciht nochmehr beim nächsten "read-thru" finde.

SkyBenni