PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : text file durchsuchen...


|Coding
19.04.2002, 16:30:22
hi leute,

ja, also ich will ein text file durchsuchen und weis nicht so recht wie ich das angehen soll. das file ist so aufgebaut...

Wort1 - Erklärung1
Wort2 - Erklärung2
Wort3 - Erklärung3
Wort4 - Erklärung4
Wort5 - Erklärung5
Wort6 - Erklärung6
.
.
.


...und es soll so aussehen das wenn der user über ein formular einen begriff eingibt soll(en) aber nur die Zeile(n) anzeigt werden die auch das wort enthalten.

bsp.: der User sucht nach "Hallo"... Hallo ist in Zeile 7,92 und 933 enthalten (in den anderen nicht), also sollen auch nur die Zeilen 7, 92 und 933 angezeigt werden, aber nicht nur die erklärung sondern auch der begriff (also die ganze Zeile).

wie realisiere ich das ?
hat vielleicht wer ein beispeil parat?

Danke schonmal

Nev
19.04.2002, 17:52:53
Hi |Coding

du öffnest das File
und verarbeitest es Zeilenweise.

wenn der Sting vorhanden ist, gibst du ihn aus, ansonsten nicht.

habe mal eine kleine Version davon geschrieben:


$to_find = "test";
$url = "http://www.test.at";
$fpread = @fopen($url, 'r');
if(!$fpread)
{
echo "Zur Zeit nicht erreichbar<br>n";
} else {
while(!feof($fpread))
{
$buffer = @ltrim(Chop(fgets($fpread, 256)));
if (strstr(strtolower($buffer), strtolower($to_find)))
echo $buffer;
}
}
@fclose($fpread);


Wenn es fragen gibt melde dich wieder

|Coding
19.04.2002, 21:46:03
hi Nev,

thx erst mal es funzt auch aber...

Das geht:

if ( $to_search == "" )
{
echo "Bitte geben Sie einen Suchbegriff ein.<br><br>";
echo "<input type=button value=zurück onClick=history.back()>";
exit;
}
$file = "sources/win_errors.txt";
$fpread = @fopen($file, 'r');
if(!$fpread)
{
echo "Zur Zeit nicht erreichbar<br><br>";
echo "<input type=button value=zurück onClick=history.back()>";
}
else
{
while(!feof($fpread))
{
$buffer = @ltrim(Chop(fgets($fpread, 256)));
if (strstr(strtolower($buffer), strtolower($to_search)))
echo $buffer;
}
}
@fclose($fpread);


aber wenn ich noch ne fehler meldung einbaue, falls ein suchwort nicht gefunden wird:


if ( $to_search == "" )
{
echo "Bitte geben Sie einen Suchbegriff ein.<br><br>";
echo "<input type=button value=zurück onClick=history.back()>";
exit;
}
$file = "sources/win_errors.txt";
$fpread = @fopen($file, 'r');
if(!$fpread)
{
echo "Zur Zeit nicht erreichbar<br><br>";
echo "<input type=button value=zurück onClick=history.back()>";
}
else
{
while(!feof($fpread))
{
$buffer = @ltrim(Chop(fgets($fpread, 256)));
if (strstr(strtolower($buffer), strtolower($to_search)))
{
echo $buffer;
}
else
{
echo "Der Suchbegriff, $to_search, konnte nicht gefunden werden.<br><br>";
echo "<input type=button value=zurück onClick=history.back()>";
exit;
}
}
}
@fclose($fpread);


Aber ich weiß nicht was ich falsch gemacht haben soll. das muss doch so gehen oder nicht?

Nev
20.04.2002, 13:00:57
@ |Coding

Du hast einen kleinen Denkfehler.

Du liest doch Zeilenweise das File aus.
Wenn der String den du Suchst nicht in der Zeile drin ist, geht er zum nächsten.

Derzeit hast du es aber so geschrieben:
Wenn der String nicht drin ist, er einen andere Ausgabe macht.

Also mußt du diesen Teil umschreiben

while(!feof($fpread))
{
$buffer = @ltrim(Chop(fgets($fpread, 256)));
if (strstr(strtolower($buffer), strtolower($to_search)))
{
echo $buffer;
}
else
{
echo "Der Suchbegriff, $to_search, konnte nicht gefunden werden.<br><br>";
echo "<input type=button value=zurück onClick=history.back()>";
exit;
}
}


würde es so lösen:

$anzeige = 0;
while(!feof($fpread))
{
$buffer = @ltrim(Chop(fgets($fpread, 256)));
if (strstr(strtolower($buffer), strtolower($to_search)))
{
echo $buffer;
$anzeige++;
}
}
if ($anzeige == 0)
{
echo "Der Suchbegriff, $to_search, konnte nicht gefunden werden.<br><br>";
echo "<input type=button value=zurück onClick=history.back()>";
}

|Coding
20.04.2002, 16:43:22
Hi Nev,

Es klappt einwandfrei!!! kannst dir das ergebnis ja mal unter http://www.privat.danielkressler.de/search.php ansehen...