Fputs - Zeilenende Tab und Co.
Altes Thema ... aber irgendwie hab ich es scheinbar immer noch nicht verstanden
Ich schreibe eine Datenzeile in eine Datei und möchte einen Zeilenumbruch realisieren.
So geht es nicht:
So geht es:
Jetzt möchte ich allerdings den Zeilenumbruch (oder sonstige Sonderzeichen) per Variable angeben können.
Kann mir jemand helfen? Ich steh gerade total im Wald ...
Ich schreibe eine Datenzeile in eine Datei und möchte einen Zeilenumbruch realisieren.
So geht es nicht:
$ende = "\r\n";
fputs($datei,$inhalt.$ende);
So geht es:
fputs($datei,$inhalt."\r\n");
Jetzt möchte ich allerdings den Zeilenumbruch (oder sonstige Sonderzeichen) per Variable angeben können.
Kann mir jemand helfen? Ich steh gerade total im Wald ...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133615
Url: https://administrator.de/contentid/133615
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
11 Kommentare
Neuester Kommentar
Es wäre sicher hilfreich zu erfahren, um welche Programmiersprache es geht.
PHP kann es jedenfalls nicht sein, denn da würde es funktionieren...
PHP kann es jedenfalls nicht sein, denn da würde es funktionieren...
<?php
$tf = tempnam('/tmp','t1');
var_dump($tf);
#=> string(21) "/private/tmp/t1FESoov"
$fh = fopen($tf,'w+');
$clrf = "\r\n";
$inhalt = "Hallo Welt";
fwrite($fh, $inhalt.$clrf);
fclose($fh);
var_dump(file_get_contents($tf));
#=> string(12) "Hallo Welt
"
?>
$inhalt = $explodeZeile.$kanal[zeilentrenner];
Die Indizes von assoziativen Arrays sind keine Konstanten, sondern Strings!!! (Aaaaaaaahhhh)
$inhalt = $explodeZeile.$kanal['zeilentrenner'];
Scheinbar macht sich heute kein PHP-Anfänger mehr die Mühe den wichtigsten Part während der Code-Entwicklung in sein Programm aufzunehmen:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 'On');
Und was dein Problem angeht:
Setz ein
var_dump($kanal['zeilentrenner']);
vor Zeile 5 und guck was passiert...
Na das Problem ist doch eindeutig:
Der String hat die Länge 4, obwohl er nur aus 2 Steuerzeichen besteht - was sagt uns das?
Genua, in dem String steht nicht CR-LF (
"\r" zu schreiben und dafür ein CR-Steuerzeichen zu erhalten funktioniert nur in einem Fall: Wenn man es in den PHP-Code mit doppelten Anführungszeichen schreibt!
string(4) "\r\n"
Der String hat die Länge 4, obwohl er nur aus 2 Steuerzeichen besteht - was sagt uns das?
Genua, in dem String steht nicht CR-LF (
0D 0A
) drinne, sondern wortwörtlich "\r\n" (5C 72 5C 6E
) (wahrscheinlich steht auch genau das in der Datenbank)..."\r" zu schreiben und dafür ein CR-Steuerzeichen zu erhalten funktioniert nur in einem Fall: Wenn man es in den PHP-Code mit doppelten Anführungszeichen schreibt!
$kanal['zeilentrenner'] = str_replace("\r",chr(0D),$kanal['zeilentrenner']);
Das ist doch schon wieder Quark
Du versuchst hier einen echten Zeilenumbruch mit Nichts zu ersetzen...
$kanal['zeilentrenner'] = str_replace('\r',"\r",$kanal['zeilentrenner']);
Und jetzt bitte verstehen und nicht nur kopieren.