Such-Probleme
thomas
- php
Hi @ all, mich plagt ein Problem: Also ich bau mir ja zur Zeit ne Suchmaschine mit txt-Datei (siehe), die Daten liegen in der Datei so vor: pro Zeile ein Datensatz, der so aussieht:
Link###Titel###URL###schlagwort,schlagwort,schlagwort###Kurzbeschreibung###Detailbeschreibung###Fazit
So, ich will dass ein eingegebenes Suchwort in allen Zeilen gesucht wird und habe folgendes Script geschrieben:
<?php
$datei="data.txt";
$zeile=file($datei);
$anzahl_zeilen=count($zeile);
for ($i=0;$i<$anzahl_zeilen;$i++) {
$data=explode("###", $zeile[$i]);
$data2=explode(",", $data[3]);
if(in_array($HTTP_GET_VARS["q"], $data2)) {
echo $zeile[$i];
}
}
?>
P.S.: Das Suchwort soll nur in den Schlagwörtern gesucht werden, deshalb: in_array($HTTP_GET_VARS["q"], $data2).
Schön und gut, aber obwohl ich im Test drei identische Zeilen in der Datei hatte, hat das Programm mir immer nur die erste Zeile ausgegeben. Deshalb meine Vermutung: gibt in_array() nur das erste Auftreten eines Strings aus, so wie z.B. strstr() ? Vielleicht liegts aber an einem logischen Fehler, der mir nicht auffällt? Was kann ich machen, dass alle Zeilen, die das Suchwort enthalten, ausgegeben werden? Ich hoffe ihr versteht was ich meine und könnt mir helfen, denn ich doktor damit schon Studen rum!
Thomas.
Hallo,
gibt in_array() nur das erste Auftreten eines Strings aus, so wie z.B. strstr() ?
Noch schlimmer: in_array gibt nur zurück, ob vorhanden (true) oder nicht vorhanden (false) Wenn Du eine Liste aller Auftreten dieses Wertes haben willst, dann brauchst Du array_keys: http://php.net/de/array_keys.
Grüße,
Christian
Hallo Thomas.
in_array() gibt nie einen String zurück, sondern liefert TRUE/FALSE.
Dein Script funktioniert übrigens bei mir ohne Probleme.
Grüße aus Würzburg
Julian