Befehl "File" ladet datei mit Leerzeichen.

BFreakout

Erfahrenes Mitglied
Hiho.... hab mal wieder ein Problem...

ich möchte mit dem Befehl:

$reg = file("accounts.dat");

die Datei "Accounts.dat" mit dem Inhalt:

gregor
sebastian
mama

als Array in der Variable $reg erstellen.
jetzt wenn ich eine IF abfrage der Existens machen möchte sagt er
zu allen Namen, das sie nicht Existieren, auser bei der Letzten...

mit print_r($reg); hab ich mir mal angesehen wie die Array aufgebaut ist und
musste feststellen das er nach jedem geladenen Namen ein Leerzeichen macht
auser beim letzten... also bei einer IF abfrage ob der Name gregor oder sebastian vorhanden ist, sagt er Nein und zur Mama, Ja...

Array ( [gregor ] => 0 [sebastian ] => 1 [mama] => 2 )

Die Datei Accounts.dat hab ich nicht mit dem Windows Editor erstellt oder bearbeitet... sondern mit einer anderen php erstellt, habs aber auch mit dem Windows Editor versucht...

würde mich um eure hilfe freuen...
 
Öffne deine Datei doch mal bitte mit dem Windows Editor und paste den Inhalt hier im Forum in einem [ code] Block. Stelle außerdem sicher, dass keine Leerzeichen am Ende der Zeile vorhanden sind.

Außerdem ist die angebliche Sruktur des von dir beschriebenen Arrays falsch. file() müsste eigentlich ein Array zurückliefern, bei dem der Array-Schlüssel die Zeilennummer ist und der Wert der Inhalt der Zeile, und nicht andersrum.
 
ich hatte den wert der Zeile mit mit Array_flip vertauscht...

wie meinst du das ich das mit dem Windows-Editor im Codeblock

gregor
sebastian
mama

Das ist der Inhalt der Datei aus dem Editor kopiert...
das komische bei der Sache ist eben, das am schluss jeder Zeile kein Leerzeichen vorhanden ist... ? :-/ ?...

:rolleyes:
 
Und wenn du das file() Array mal direkt ausgibst, ohne vorher über array_flip zu gehen? Also probier mal folgendes.
PHP:
$a_file = file("datei.txt");
foreach($a_file as $v){
  echo "ohne trim() |".$v."| mit trim() |".trim($v)."|<br />\n";
}
Wenn ohne trim auch keine Abstände zu den | bestehen, dann liegt es am Array Flip. Wenn doch, musst du halt die Werte vorher mit trim() "beschneiden", bevor du sie in ein neues Array schreibst, zum suchen.
 
mmmhh...

geht auch nicht...

dann muss es an Array_flip() liegen... aber wie kann man sonst
die werte tauschen...

ich möchte ja, das aus einer Datei gelesen wird ob ein account vorhanden ist und
anschliessend mit dem Account weiterarbeiten :-/

wenn ich jetzt eine Array hab wo zeilennummern vorhanden sind,
kann ich ja nicht mit einem IF befehl testen ob der account stimmt?!

Weil ich will ja einen Namen vergleichen und keine Zahlen...
und schließend mit dem Namen weiterarbeiten...

verstehst du wie ich es mein
 
Re: mmmhh...

Original geschrieben von BFreakout
ich möchte ja, das aus einer Datei gelesen wird ob ein account vorhanden ist und
anschliessend mit dem Account weiterarbeiten :-/
Warum so kompliziert wenns auch einfach geht? ;)

user.dat
Code:
foo
bar
test
Jetzt wird die Datei eingelesen, und das Array nach einem gewünschten Namen gesucht. Dieser könnte jetzt aus einem Formular etc. kommen. In einer kleinen Schleife wird einfach jedes Array-Element mit dem Usernamen verglichen. Sofern einer gefunden wurde wird eine Kontrollvariable gesetzt und die Schleife wird wieder verlassen:
PHP:
<?php
$blnCheck   = false;
$file       = file('user.dat');
$strUser    = 'foo';

for($a = 0; $a < count($file); $a++) {
    if(trim($file[$a]) == $strUser) {
        $blnCheck = true;
        break;
    }
}

if($blnCheck) {
    echo 'hurra!';
} else {
    echo 'mist!';
}
?>
 
Zurück