496 Stimmen

PHP - wie erzeugt man ein Zeilenumbruchzeichen?

In PHP versuche ich, ein Zeilenumbruchszeichen zu erzeugen:

echo $clientid;
echo ' ';
echo $lastname;
echo ' ';
echo '\r\n';

Danach öffne ich die erstellte Datei in Notepad und sie schreibt den Zeilenumbruch wörtlich:

1 Unbekannter \r\n 1 Unbekannter \r\n 1 Unbekannter \r\n

Ich habe viele Varianten des \r\n aber keine funktioniert. Warum wird der Zeilenumbruch nicht in einen Zeilenumbruch umgewandelt?

15voto

Wouter Dorgelo Punkte 11372

Sie sollten dies verwenden:

"\n"

Sie sollten auch einen Blick auf folgende Seiten werfen PHP EOL .

13voto

Shoe Punkte 72596

Eigentlich \r\n ist für die HTML-Seite der Ausgabe. Mit diesen Zeichen können Sie einfach einen Zeilenumbruch im Html-Code erzeugen, um ihn besser lesbar zu machen:

echo "<html>First line \r\n Second line</html>";

wird ausgegeben:

<html>First line
Second line</html>

die Anzeige der Seite sein wird:

First line Second line

Wenn Sie das wirklich so gemeint haben, müssen Sie nur das einfache Anführungszeichen durch das Anführungszeichen "" ersetzen:

echo "\r\n";

Andernfalls, wenn Sie den Text aufteilen wollen, in unserem Beispiel "Erste Zeile" und "Zweite Zeile", müssen Sie den HTML-Code verwenden: <br /> :

First line<br />Second line

die ausgegeben wird:

First line
Second line

Außerdem wäre es besser lesbar, wenn Sie das gesamte Skript durch ersetzen würden:

echo "$clientid $lastname \r\n";

10voto

amin gholami Punkte 453

Für die HTML-Ausgabe gibt es eine praktische PHP-Funktion, die eine <br /> Tag auf neue Zeilen:

echo nl2br("One line.\n Another line.");

5voto

Motahar Hossain Punkte 557

Nichts hat bei mir funktioniert.

PHP_EOL

. "\r\n";

$NEWLINE_RE = '/(\r\n)|\r|\n/'; // take care of all possible newline-encodings in input file
$var = preg_replace($NEWLINE_RE,'', $var);

Funktioniert bei mir:

$admin_email_Body = $admin_mail_body .'<br>' ."\r\n";
$admin_email_Body .= 'This is line 2 <br>' ."\r\n";
$admin_email_Body .= 'This is line 3 <br>' ."\r\n";

4voto

user2574384 Punkte 57

Aus irgendeinem Grund wird in allen Beiträgen, die sich mit dem Escapen von Zeilenumbrüchen in PHP beschäftigen, nicht erwähnt, dass das einfache Einfügen eines Zeilenumbruchs in Strings mit einfachen Anführungszeichen genau das bewirkt, was Sie denken:

ex 1.

 echo 'foo\nbar';

Beispiel 1 liefert eindeutig nicht das gewünschte Ergebnis. Es stimmt zwar, dass man einen Zeilenumbruch in einfachen Anführungszeichen nicht umgehen kann, aber man kann ihn haben:

ex 2.

 echo 'foo
 bar';

Beispiel 2 hat genau das gewünschte Verhalten. Leider ist der eingefügte Zeilenumbruch betriebssystemabhängig. Dies ist normalerweise kein Problem, da Webbrowser/Server den Zeilenumbruch korrekt interpretieren, unabhängig davon, ob es sich um \r , \r\n ou \n.

Diese Lösung ist natürlich nicht ideal, wenn Sie vorhaben, die Datei über andere Mittel als einen Webbrowser und auf mehreren Betriebssystemen zu verteilen. In diesem Fall sollten Sie sich eine der anderen Antworten ansehen.

Hinweis: Mit einem funktionsreichen Texteditor sollten Sie in der Lage sein, einen Zeilenumbruch als binäres Zeichen einzufügen, das auf einem anderen Betriebssystem als dem, das die Datei bearbeitet, einen Zeilenumbruch darstellt. Wenn alles andere fehlschlägt, können Sie einfach einen Hex-Editor verwenden, um das binäre ASCII-Zeichen einzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X