Probleme mit newline beim Dateiauslesen
Daniel
- php
Hi,
hab folgendes Problem:
Ich habe ein Script, welches mir Werte in eine Textdatei schreibt.
Aufbau der Datei:
Test1
a|b|c
1|2|3
;
das macht das script auchsauber und ordentlich. Nur wenn ich jetzt diese Datei in einer Schleife auslese, liest er die Newlinezeichen nicht mit aus!
Script zum reinschreiben:
$NewFile=fopen("$dokuname.txt","w");
$einfuge_array[0]="#";
$einfuge_array[1]="Dateiname: $dokuname";
$tmp=implode("|",$einfuge_array);
fputs($NewFile,$tmp);
fputs($NewFile,"\n");
} else {
$NewFile=fopen("$dokuname.txt","w");
fseek($NewFile,eof,SEEK_END);
}
$_array[0]="$uber";
$tmp=implode("|",$_array);
fputs($NewFile,$tmp);
$k=1;
for($i=1;$i<=$Reihe;$i++) {
for($j=1;$j<=$Spalte;$j++) {
$new_array[$j]=${wert.$k};
$k++;
}
$tmp=implode("|",$new_array);
fputs($NewFile,"\n");
fputs($NewFile,$tmp);
}
fputs($NewFile,"\n");
fwrite($NewFile,";");
fclose($NewFile);
das auslesen ist ja nicht das Ding, nur er gibt mir dann als erste Zeile 'Test1 a|b|c 1|2|3' wieder und er sollte ja eigentlich jede Zeile einzeln auslesen oder nicht ?
mfG
Daniel G.
hi,
das auslesen ist ja nicht das Ding, nur er gibt mir dann als erste Zeile 'Test1 a|b|c 1|2|3' wieder und er sollte ja eigentlich jede Zeile einzeln auslesen oder nicht ?
steht das so wie du es angibst im html-quellcode, oder wird es so vom browser _angezeigt_?
das dies zwei verschiedene sachen sind, weisst du ja sicher.
gruss,
wahsaga
steht das so wie du es angibst im html-quellcode, oder wird es so vom browser _angezeigt_?
das dies zwei verschiedene sachen sind, weisst du ja sicher.
das steht so im html quellcode. das script liest aus dieser Datei alles bis auf die newline zeichen aus. Wenn ich aber die Datei "per Hand" anlege (also im Texteditor) dann funktioniert das einwandfrei. Es gibt für mich keinen ersichtlichen grund, warum er jetzt diese dynamisch erzeugte Datei fehlerhaft ausliest ! HILFE..
mfG
Daniel
hi,
das script liest aus dieser Datei alles bis auf die newline zeichen aus. Wenn ich aber die Datei "per Hand" anlege (also im Texteditor) dann funktioniert das einwandfrei.
dann käme eventuell noch der von windows und unix/linux unterschiedlich gehandhabte zeilenumbruch als ursache in frage.
windows schreibt für einen zeilenumbruch hex 0D 0A, linux hingegen nur 0D.
wenn du also die textdatei z.b. unter windows erzeugt hast, die maschinelle datei aber unter linux, dann könnten da unterschiedliche arten von zeilenumbrüchen drin sein (ja nachdem, wie du die datei zwischen den systemen übertragen hast, ascii oder binär).
gruss,
wahsaga
dann käme eventuell noch der von windows und unix/linux unterschiedlich gehandhabte zeilenumbruch als ursache in frage.
windows schreibt für einen zeilenumbruch hex 0D 0A, linux hingegen nur 0D.
Ich habe alles nur auf ner Windows Kiste laufen. Die "handgemachte" Datei erstelle ich mit TextPad.
Das Script liegt jetzt erstmal auf meinem Home
http://stud.fh-wedel.de/~ia5259
Die erste Doku ist mit Hand erstellt worden und die zweite wäre eine dynamisch erstellte Datei.
Kannst ja mal anstarten.
Aber bis hierhin vielen dank für die Hilfe..
Daniel
Moin!
das auslesen ist ja nicht das Ding,
Aber genau diese Aufgabe scheitert. Wo ist das Ausleseskript? Nicht da? Schade, dann kann man dir noch nicht helfen.
- Sven Rautenberg
Wo ist das Ausleseskript? Nicht
Hier, aber da das mit einer Handerstellten Datei geklappt hatt, denke ich nicht das da der Fehler drin liegt.
$filehandle=fopen("$doku.txt","r");
while(!feof($filehandle)) {
$tmp=fgets($filehandle,256);
$tmp=chop($tmp);
$tmp_array=explode("|",$tmp);
if (($tmp_array[0]!=";")&&($tmp_array[0]!="#")) {
echo"<h3>$tmp_array[0]</h3>\n";
echo"<table border=1>\n";
while(($tmp_array[0]!=";")&&($tmp_array[0]!="#")) {
$tmp=fgets($filehandle,256);
$tmp=chop($tmp);
$tmp_array=explode("|",$tmp);
if(($tmp_array[0]!=";")&&($tmp_array[0]!="#")){
echo"<tr>\n";
foreach($tmp_array as $wert) {
echo"<td>$wert</td>\n";
}
echo"</tr>\n";
}
}//while ;
echo"</table>\n";
echo"<br><br>\n";
}
}//while !feof
fclose($filehandle);
Ich weiß es auch nicht..
Daniel G.