EOL in Datei
Eric N. Falbe
- php
0 Felix Riesterer0 Tom0 flowh
Ich will einzelne Zeilen aus einer Textdatei in Variablen einlesen.
Mit fgets liest es immer den Zeilenumbruch mit ein.
Ich wollte den mit str_replace ersetzen, aber irgendwie klappt das nicht.
Hier ist mein Code:
<?php
$filename = 'Namen'; #Dateiname
$DLesen = fopen($filename, 'r');
do{
$Name = fgets ( $DLesen , 100 );
$Name1 = str_replace("\r\n", "", $Name);
echo '<IMG SRC="'.$i.$Name1.'" width=100><BR>'."\n";
} while (!feof ($DLesen));
#$Wert = fread($write, filesize($filename));
echo (filesize($filename).'Bytes - '.$Name1.'<BR>'."\n");
fclose($DLesen);
?>
Lieber Eric,
$Name1 = str_replace("\r\n", "", $Name);
probier's mal mit trim()!
Und wenn Dein Script eben nicht zeilenweise einliest (und so sieht es auch aus), dann könntest Du noch folgendes probieren:
$Name1 = preg_replace('~(?s)[\r\n]~', '', $Name);
Liebe Grüße,
Felix Riesterer.
trim() bewrikt bei meinen eingelesenen Strings gar nichts.
Aber meine Routine liest die Zeilen einzeln in die Variablen ein.
Ich habe jetzt folgende for-Schleife, um die ueberschuessigen Zeichen zu entfernen.
for ($i=0; $i<=strlen($Name); $i++) {
if ( ord($Name[$i])== 10 ) $Name[$i]= '';
if ( ord($Name[$i])== 0 ) $Name[$i]= '';}
Aber jetzt bekomme ich folgende Fehlermeldung:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/eric/public_html/Programmieren/PHP/Namen.php on line 9
Keine Ahnung, wie das kommt.
Ohne den letzten Befehl, der die Nullen loescht, klappt es aber ansonsten.
Ausser dass eben ein Lehrzeihen hinten dranhaengt.
Hello,
Ich will einzelne Zeilen aus einer Textdatei in Variablen einlesen.
Mit fgets liest es immer den Zeilenumbruch mit ein.
Ich wollte den mit str_replace ersetzen, aber irgendwie klappt das nicht.
$Name1 = str_replace("\r\n", "", $Name);
Hast Du sichergetellt, dass in der Datei auch "\r\n" als Zeilenendezeichen benutzt wird?
Oder könnte es auch nur "\n" sein?
Str_Replace() sucht nämlich nach der Übereinstimmung mit dem gesamten Suchstring und nicht nur nach einzelnen Zeichen daraus!
Liebe Grüße aus dem Cyberspace
Tom vom Berg
Danke Tom fuer den Hinweis!
"\r\n" sind irgendwie falsch. Ich habe die einzelnen Variablenteile mit ord() ausgegeben und kam auf ASCII-Werte von 10 und 0.
Mit den beiden Befehlen funktioniert nun alles wunderbar:
$Name = str_replace(chr(10), "", $Name);
$Name = str_replace(chr(0), "", $Name);
Hello,
Danke Tom fuer den Hinweis!
Bitte, gerne geschehen.
"\r\n" sind irgendwie falsch. Ich habe die einzelnen Variablenteile mit ord() ausgegeben und kam auf ASCII-Werte von 10 und 0.
Das deutet darauf hin, dass die Datei aus einem C-Programm oder Cobol-Programm oder ähnlichem stammt. Dort werden die Strings mit einer #0 abgeschlossen. Wenn der Programmierer nun das Zeilenendezeichen an den Stringbuffer und nicht an den Strings angehängt hat, und dann dieses Kontrukt komplett in die Datei geschrieben hat, müsste eigetnlich #0#10 hinten dranhängen.
Eigentlich liegt dann aber ein "n+1"-Fehler zugrunde.
Würde mich daher interessieren, aus welchem Umfeld die Dateien stammen.
Mit den beiden Befehlen funktioniert nun alles wunderbar:
$Name = str_replace(chr(10), "", $Name);
$Name = str_replace(chr(0), "", $Name);
mit rtrim() sollte es aber auch gehen!
<http://de2.php.net/manual/de/function.rtrim.php>
>
>
Liebe Grüße aus dem Cyberspace
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
Hallo Eric.
Ich will einzelne Zeilen aus einer Textdatei in Variablen einlesen.
Du kennst file()? Das gibt ein Array zurück; jeder Eintrag in dem Array entspricht einer Zeile in der Datei.
Servus,
Flo