Frage zu in_array()

Hallo Leute,

langsam bin ich echt am verzweifeln…

Folgendes Problem:

Ich habe eine Datei mit diesem Inhalt:

123432345564332
146754567856455
235677643456787
245667788888965

Jetzt möchte ich Datei wie folgt öffen
und prüfen… ob wert existiert!

$schluessel = array();
$wert = „245667788888965“;

$datei = fopen(„datei.txt“, „r“);

while (!feof($datei))
{
$zeile = fgets($datei);
$daten = explode("\n", $zeile);
array_push($schluessel, $daten[0]);
}
fclose($datei);

if (in_array($wert, $schluessel))
{
echo „Wert gefunden…“;
}
else
{
echo „Wert nicht gefunden…“;
}

Leider klappt die Sache nicht … hat
jemand vielleicht eine Idee?

Danke, Andreas

Hi,

Ich habe eine Datei mit diesem Inhalt:

123432345564332
146754567856455
235677643456787

Jetzt möchte ich Datei wie folgt öffen
und prüfen… ob wert existiert!

Ungetestet, sollte so gehen:

if (in\_array('245667788888965', preg\_split("/(\r?\n)+/", file\_get\_contents('datei.txt')))) {
 echo 'gefunden!'; 
}

Muss es mit in_array sein? Würde ich sonst so suchen:

if (strpos('245667788888965', file\_get\_contents('datei.txt')) !== FALSE) {
 echo 'gefunden!'; 
}

Ciao
Rudy

Hi,
nebenbei:

$datei = fopen(„datei.txt“, „r“);

while (!feof($datei))
{
$zeile = fgets($datei);
$daten = explode("\n", $zeile);
array_push($schluessel, $daten[0]);
}
fclose($datei);

$daten=file($datei);

macht das selbe in einer Zeile.

Davon ganz ab:

fgets liest bis zum Zeilenende. Wenn du die Whitespaces am Ende der Zeile (Zeilenumbrüche) entfernen willst dann nimm besser rtrim(). So wie du das gemacht hast versagt explode wenn du eine Windows-Textdatei hat die „\r\n“ als Zeilenumbruch hat

Gruss
Joey

Hallo Joey und Rudy,

danke für die schnelle Hilfe…!!!

die Idee mit dem „file_get_contents()“ …
war einfach genial!!! :smile:)))

Danke nochmal … Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

$daten=file($datei);
macht das selbe in einer Zeile.

file() nimmt den Zeilenumbruch mit in die Array-Elemente auf.

Ciao
Rudy