Drucken Sie Zeilenumbrüche in PHP in einfachen Anführungszeichen

125

Ich versuche, so viele einfache Anführungszeichen wie möglich zu verwenden, und habe festgestellt, dass ich \ n nicht in einfachen Anführungszeichen verwenden kann. Ich weiß, dass ich eine neue Zeile buchstäblich eingeben kann, indem ich die Eingabetaste drücke, aber das bringt die Einrückung meines Codes durcheinander.

Gibt es ein ASCII-Zeichen oder etwas, das ich eingeben kann, um Zeilenumbrüche zu erzeugen, wenn ich einfache Anführungszeichen verwende?

Matt
quelle
Wenn jemand an einer Lösung interessiert ist, die sowohl für den Browser als auch für das Terminal funktioniert (CLI, Befehlszeile): stackoverflow.com/a/9665253/1923625
Omar Tariq

Antworten:

142

Nein, da einfache Anführungszeichen sogar das Ersetzen von Hex-Codes verhindern.

echo 'Hello, world!' . "\xA";
Ignacio Vazquez-Abrams
quelle
1
Ah ok .. Ich hatte gehofft, dass ich nicht darauf zurückgreifen müsste .. Danke!
Matt
Jawohl. Er antwortete in weniger als 10 Minuten. Ich musste bis dahin warten, um zu akzeptieren, dann habe ich es vergessen, haha.
Matt
1
Gibt es eine Alternative dazu? Ich muss es in einem preg_replace verwenden, in dem ich keine doppelten Anführungszeichen verwenden kann.
Alex Hadley
1
Das ist nicht die richtige Argumentation. Es ist nicht so, weil Sie in PHP ein Zeilenumbruchzeichen nicht in einfachen Anführungszeichen ausdrücken können. Und das ist es. Das Lesen des Handbuchs hätte helfen können :)
hakre
3
@hakre Sicherlich hätte das Lesen des Handbuchs helfen können, aber zum Glück ist StackOverflow der richtige Ort, um bequem nach genau diesen Antworten zu suchen;)
Frederik Krautwald
107
echo 'hollow world' . PHP_EOL;

Verwenden Sie die Konstante PHP_EOL, dann ist sie auch vom Betriebssystem unabhängig.

Tassen
quelle
4
Normalerweise sollten Sie PHP_EOL nicht verwenden, da dies Ihren Code von dem System abhängig macht, auf dem er ausgeführt wird. ZB kommuniziert Ihr Linux-Server mit einem anderen Server und dann wird Ihr Server durch Windows ersetzt ... Nicht gut.
Andreas
25

Wenn Sie echoeinen Browser verwenden, können <br/>Sie Folgendes verwenden:

echo 'Will print a newline<br/>';
echo 'But this wont!';
Anthony Forloney
quelle
3
Leider ist es eher für Terminalzwecke. Vielen Dank für Ihre Antwort.
Matt
Versuchen Sie dies in einer Nur-Text-E-Mail;)
Kai Noack
22

Zu Ihrer Information, es ist möglich, Zeilenumbrüche ohne doppelte Anführungszeichen in Zeichenfolgen zu setzen:

printf('Please%1$sgive%1$sme%1$snewlines%1$s', PHP_EOL);

Was nützlich sein kann, wenn Ihre irrationale Angst vor doppelten Anführungszeichen keine Grenzen kennt. Obwohl ich befürchte, dass diese Heilung schlimmer sein könnte als die Krankheit.

Leepowers
quelle
Es ist keine Angst ... Sie erhalten nur eine bessere Leistung, wenn Sie einfache Anführungszeichen verwenden, also versuche ich, sie öfter zu verwenden als nicht ... aber yah, dies ist keine wirklich gute Lösung für dieses Problem, es ist mehr Ärger als es wert . Vielen Dank.
Matt
5
Ich habe es nicht getestet, aber ich würde wetten, dass die Verwendung von doppelten Anführungszeichen schneller ist als die Verwendung von printfoder die Verkettung von Zeichenfolgen im Allgemeinen.
Mikko Rantalainen
Es ist nicht immer irrational, doppelte Anführungszeichen können problematisch sein, je nachdem, was Sie tun möchten. echo 'For example, I want this to spit out php code.\necho $this->stuff;';
David Baucum
@ DavidBaucum, ich weiß, dass dies ein alter Thread ist, aber nur als Referenz für Sie und alle anderen, die darüber stolpern. echo "For example, I want this to spit out php code.\necho \$test;";Wie Sie sehen, können Sie den Variablen entkommen, wodurch das von Ihnen beschriebene Problem mit doppelten Anführungszeichen behoben wird.
Josh Wood
9

Es gibt einen Unterschied bei der Verwendung von einfachen VS-Anführungszeichen in PHP

zB: 1. echo '$var\n'; 2.echo "$var\n";

  • In 1 wird PHP buchstäblich gedruckt: $var\n
  • In 2 muss PHP den Speicherort im Speicher suchen $varund den Wert an diesem Speicherort zurückgeben. Außerdem muss PHP das \ n als neues Zeilenzeichen analysieren und das Ergebnis drucken

Wir sind im Bereich von Millionstelsekunden, aber es gibt einen Unterschied in der Leistung. Ich würde Ihnen empfehlen, wann immer möglich einfache Anführungszeichen zu verwenden, auch wenn Sie wissen, dass Sie diese Leistungssteigerung nicht wahrnehmen können. Aber ich bin ein paranoider Entwickler, wenn es um Leistung geht.

linuxdev
quelle
Ich begrüße Sie, dass Sie versucht haben, den besten Weg zu finden, anstatt die Lösung mit doppelten Anführungszeichen zu verwenden. AKA Die Lazy-Developer-Lösung.
Linuxdev
Ich weiß am besten, was ich will: echo 'foo', "\ n";
Linuxdev
3
Der schnelle Weg, dies zu tun, istecho $var + "\n";
Hengjie
2
@Hengjie: Du meinst wahrscheinlich echo $var . "\n";.
Skippy le Grand Gourou
@linuxdev: Ich verstehe den Sinn dieser Antwort nicht. $var='$var'Vergleichen Sie Äpfel nicht mit Orangen, da die Ausgabe von 1 ohnehin nicht mit der Ausgabe von 2 identisch ist (auch wenn Sie davon ausgehen …)?
Skippy le Grand Gourou
8

Die einzige Escape-Sequenz, die Sie in einfachen Anführungszeichen verwenden können, ist für das einfache Anführungszeichen selbst.

$foo = 'That\'s great';

Die einzige Möglichkeit, eine neue Zeile in eine mit einfachen Anführungszeichen erstellte Zeichenfolge einzufügen, besteht darin, eine wörtliche neue Zeile einzufügen

$bar = 'That\'s
cheating';
Alan Storm
quelle
1
Das ist im Vergleich zu den anderen Antworten die einfachste Lösung.
Kai Noack
5

Ich frage mich, warum niemand die Alternative zur Verwendung der Funktion hinzugefügt hat chr():

echo 'Hello World!' . chr(10);

oder effizienter, wenn Sie es millionenfach wiederholen:

define('C_NewLine', chr(10));
...
echo 'Hello World!' . C_NewLine;

Dies vermeidet die albern aussehende Notation, eine Zeichenfolge mit einfachen und doppelten Anführungszeichen zu verketten.

NewSites
quelle
1
Dies scheint die schönste, fusselfreundlichste und tragbarste Lösung zu sein.
Daraul
3

Möglicherweise möchten Sie <<< verwenden

z.B

<<<VARIABLE
this is some
random text
that I'm typing 
here and I will end it with the 
same word I started it with
VARIABLE

Weitere Informationen unter: http://php.net/manual/en/language.types.string.php

Übrigens - Einige Codierungsumgebungen wissen nicht, wie sie mit der obigen Syntax umgehen sollen.

Duniyadnd
quelle
1
Ah ja ... aber ich hasse immer noch die Tatsache, dass VARIABLE am Ende alle Einrückungen in Ihrem Code durchbricht ... Ich bin mit HEREDOC-Syntax auf so viele (dumme) Fehler gestoßen
Matt
0

Nein, laut Dokumentation erkennt PHP kein spezielles Symbol in einfachen Anführungszeichen. Und es gibt keinen einzigen Grund, so oft wie möglich einfache Anführungszeichen zu verwenden

Ihr gesunder Menschenverstand
quelle
Die Verwendung von einfachen Anführungszeichen führt zu einer leichten Leistungssteigerung. Es scheint auch eine gute Praxis zu sein, explizit zu definieren, wann Variablen ersetzt werden sollen.
Jackson Miller
4
@Jackson gibt es keine Leistungssteigerung. Auf jeden Fall. Vergiss diese kindischen Gerüchte. Und nein, sprechen Sie nicht von Variablen, sondern von speziellen Sequenzen. Wenn Sie möchten, dass eine Sequenz, eine Variable oder eine neue Zeile erweitert wird, verwenden Sie zu diesem Zweck doppelte Anführungszeichen . Und die Weigerung von OP, es für seinen Zweck zu verwenden, ist Unsinn.
Ihr gesunder Menschenverstand
0

falls Sie eine Variable haben:

$your_var = 'declare your var';
echo 'i want to show my var here'.$your_var.'<br>';
Braham Youssef
quelle
0

Sie können dies verwenden:

echo 'Hello World' . "\n";
Cisco Test
quelle
-1

Das hat bei mir gut funktioniert:

print_r('Hello world'.PHP_EOL);
Mohammad Zaid Pathan
quelle