In PHP versuche ich, einen Zeilenumbruch zu erstellen:
echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';
Danach öffne ich die erstellte Datei im Editor und sie schreibt die neue Zeile buchstäblich:
1 John Doe \ r \ n 1 John Doe \ r \ n 1 John Doe \ r \ n
Ich habe viele Variationen der ausprobiert \r\n
, aber keine funktioniert. Warum verwandelt sich die Newline nicht in eine Newline?
php
string-interpolation
davidjhp
quelle
quelle
Antworten:
Nur Zeichenfolgen in doppelten Anführungszeichen interpretieren die Escape-Sequenzen
\r
und\n
als '0x0D' bzw. '0x0A'. Sie möchten also:Zeichenfolgen in einfachen Anführungszeichen kennen dagegen nur die Escape-Sequenzen
\\
und\'
.Wenn Sie also die Zeichenfolge in einfachen Anführungszeichen nicht mit einem Zeilenumbruch verknüpfen, der an anderer Stelle generiert wurde (z. B. mithilfe einer Zeichenfolge in doppelten Anführungszeichen
"\r\n"
oder mithilfe einerchr
Funktionchr(0x0D).chr(0x0A)
), können Sie einen Zeilenumbruch innerhalb einer Zeichenfolge in einfachen Anführungszeichen nur mit Ihrem Editor eingeben:Überprüfen Sie Ihren Editor auf Zeilenumbrucheinstellungen, wenn Sie beispielsweise eine bestimmte Zeichenfolge benötigen
\r\n
.quelle
PHP_EOL
stattdessen verwendenVerwenden Sie die vordefinierte
PHP_EOL
Konstante:Der konstante Wert wird entsprechend den Zeilenenden des Betriebssystems festgelegt, auf dem PHP ausgeführt wird. Unter Linux wird es sein
"\n"
; unter Windows wird es sein"\r\n"
.quelle
Der Befehl "echo" in PHP sendet die Ausgabe als unformatiertes HTML an den Browser. Selbst wenn der Browser sie in doppelte Anführungszeichen setzt, wird sie nicht in zwei Zeilen analysiert, da ein Zeilenumbruchzeichen in HTML nichts bedeutet. Deshalb müssen Sie entweder verwenden:
wenn Sie "echo" verwenden, oder verwenden Sie stattdessen fwrite ...
Dadurch wird anstelle von "\ n" ein HTML-Zeilenumbruch ausgegeben.
quelle
Verwenden Sie die Konstante PHP_EOL, um unabhängig von der Plattform das richtige Zeichen zu erhalten.
http://us3.php.net/manual/en/reserved.constants.php
Ein einfaches Anwendungsbeispiel:
quelle
Zeichenfolgen zwischen doppelten Anführungszeichen werden
""
interpoliert, dh sie konvertieren maskierte Zeichen in druckbare Zeichen.Zeichenfolgen zwischen einfachen Anführungszeichen
''
sind wörtlich, dh sie werden genau so behandelt, wie die Zeichen eingegeben werden.Sie können beide in derselben Zeile haben:
Ausgänge:
quelle
echo "$clientid $lastname\r\n"
Sie sollten dies verwenden:
Vielleicht möchten Sie auch einen Blick auf PHP EOL werfen .
quelle
Ist eigentlich
\r\n
für die HTML-Seite der Ausgabe. Mit diesen Zeichen können Sie einfach eine neue Zeile im HTML-Code erstellen, um die Lesbarkeit zu verbessern:wird ausgegeben:
Das Anzeigen der Seite ist:
Wenn Sie das wirklich so gemeint haben, müssen Sie nur das einfache Anführungszeichen mit dem "" Anführungszeichen korrigieren:
Andernfalls , wenn Sie den Text zu teilen bedeuten, in unserem Beispiel ‚Erste Zeile‘ und ‚Zweite Zeile‘ müssen Sie den HTML - Code verwenden:
<br />
:das wird ausgegeben:
Es wäre auch besser lesbar, wenn Sie das gesamte Skript durch Folgendes ersetzen würden:
quelle
First line Second line
folgt gerendert: Jedes Leerzeichen einschließlich Zeilenumbrüchen wird in der gerenderten Ausgabe auf ein Leerzeichen komprimiert. Auch</br>
ist alles andere als gültiges HTML.w3school bot diesen Weg an:
Mit dieser Funktion können Sie es tun. Ich habe andere Methoden ausprobiert, die oben erwähnt wurden, aber sie helfen mir nicht.
quelle
nl2br()
konvertiert die Funktion Zeilenumbrüche in das<br />
HTML-Tag. Dies kann nützlich sein, um eine neue Zeile auf Browserseiten zu erstellen, jedoch keine neue Zeile in Textdateien oder JavaScript, oder um auf dem Bildschirm oder der Konsole zu drucken.Aus irgendeinem Grund wird in jedem einzelnen Beitrag, in dem nach Zeilenumbrüchen in PHP gefragt wird, der Fall nicht erwähnt, dass das einfache Einfügen eines Zeilenumbruchs in Zeichenfolgen in einfachen Anführungszeichen genau das bewirkt, was Sie denken:
ex 1.
In Beispiel 1 wird das gewünschte Ergebnis eindeutig nicht gedruckt. Es ist zwar richtig, dass Sie einem Zeilenumbruch in einfachen Anführungszeichen nicht entkommen können, Sie können jedoch eines haben:
ex 2.
Beispiel 2 hat genau das gewünschte Verhalten. Leider ist die eingefügte neue Zeile betriebssystemabhängig. Dies ist normalerweise kein Problem, da Webbrowser / Server die neue Zeile korrekt interpretieren, unabhängig davon, ob es sich um \ r, \ r \ n oder \ n handelt.
Offensichtlich ist diese Lösung nicht ideal, wenn Sie die Datei auf andere Weise als über einen Webbrowser und auf mehrere Betriebssysteme verteilen möchten. In diesem Fall sollten Sie eine der anderen Antworten sehen.
Hinweis: Mit einem Rich-Text-Editor mit Funktionen sollten Sie in der Lage sein, eine neue Zeile als Binärzeichen einzufügen, die eine neue Zeile auf einem anderen Betriebssystem als demjenigen darstellen, das die Datei bearbeitet. Wenn alles andere fehlschlägt, reicht es aus, einfach einen Hex-Editor zum Einfügen des binären ASCII-Zeichens zu verwenden.
quelle
Verwenden Sie das PHP nl2br, um die Zeilenumbrüche in einer Textzeichenfolge abzurufen.
quelle
nl2br
Funktion konvertiert Zeilenumbrüche in das<br />
HTML-Tag. Wenn die Zeichenfolge kein Zeilenumbruchzeichen enthält, führt diese Funktion nichts aus! Darüber hinaus geht es nicht darum, eine Zeile innerhalb eines Absatzes in HTML zu unterbrechen. Es geht um den Newline-Charakter !Ich habe diese Kombination auch sowohl in einfachen als auch in doppelten Anführungszeichen ausprobiert. Aber keiner hat funktioniert. Anstatt eine
\n
bessere Verwendung<br/>
in doppelten Anführungszeichen zu verwenden. So was..quelle
Verwenden Sie chr (13) für den Wagenrücklauf und chr (10) für die neue Zeile
quelle
Für alle Echoanweisungen verwende ich immer
<br>
doppelte Anführungszeichen.quelle
Nichts hat für mich funktioniert.
PHP_EOL
. "\r\n";
Funktioniert bei mir:
quelle
quelle