2009-08-26 13 views
1

In C Sie eine Stringliteral in der nächsten Zeile fortsetzen können die Newline-Zeichen zu entkommen: Ist es in PHP möglich, Zeilenumbrüche in Strings wie in C zu umgehen?

char* p = "hello \ 
new line.";
(My C ein wenig eingerostet ist und dies könnte nicht 100% korrekt)

Aber in php, wird der Backslash unter wörtlich:

$p = "hello \ 
new line.";

IE Der umgekehrte Schrägstrich ist Teil der Zeichenfolge. Gibt es eine Möglichkeit, das C-Verhalten in PHP in diesem Fall zu erhalten?

Antwort

6

es gibt ein paar Möglichkeiten, ist das in PHP zu tun, die ähnlich sind, aber keine Möglichkeit, es mit einer Fortsetzung Terminator zu tun.

Zunächst können Sie Ihre Zeichenfolge in der nächsten Zeile fortsetzen, ohne ein bestimmtes Zeichen zu verwenden. Folgendes ist in PHP gültig und legal.

Das zweite Beispiel sollte einer der Nachteile dieses Ansatzes sein. Wenn Sie die restlichen Zeilen nicht verlassen haben, fügen Sie Ihrer Zeichenfolge zusätzliche Leerzeichen hinzu.

Der zweite Ansatz ist mit anderen Worten in der Zeichenfolge führen erstellt wird die gleiche, es gibt keine zusätzlichen Leerzeichen String-Verkettung

$foo = 'hell there two line'. 
'string'; 

$foo = 'hell there two line'. 
    'string'; 

Beide obigen Beispiel zu verwenden. Der Kompromiss hier ist, dass Sie eine String-Verkettung durchführen müssen, die nicht frei ist (obwohl PHP mit den veränderbaren Strings und der modernen Hardware eine Menge Verkettungen durchmachen kann, bevor Sie Leistungseinbrüche bemerken)

Endlich Da ist das HEREDOC-Format. Ähnlich wie bei der ersten Option können Sie mit HEREDOC auch Ihre Strings über mehrere Zeilen aufteilen.

$foo = <<<TEST 
I can go to town between the the start and end TEST modifiers. 

    Wooooo Hoooo. You can also drop $php_vars anywhere you'd like. 

Oh yeah! 
TEST; 

Sie erhalten die gleichen Probleme der führenden Leerzeichen, wie Sie mit dem ersten Beispiel würde, aber manche Leute finden HEREDOC besser lesbar.

+0

Nichts davon wird verhindern, dass die Zeilenumbrüche hinzugefügt werden (es sei denn, Sie fügen Zeilenumbrüche hinzu, wenn Sie Whitespaces angeben). –

+1

Ja, ich habe Zeilenumbrüche eingefügt, als ich White-Space erwähnte. Ich arbeite hauptsächlich mit HTML-Ausgaben, daher vergesse ich, dass diese Zeilenumbrüche in manchen Bereichen eine große Sache sind. (Hinweis: die Verkettungsmethode I und andere, die erwähnt werden **, ** verhindern, dass die Zeilenumbrüche hinzugefügt werden.) –

+0

Danke für die lange und nachdenkliche Antwort – Petruza

7

Ist es möglich, Ihre Zeichenfolge wie folgt einfach zu verketten:

$p = "hello " . 
    "new line."; 
+0

Sie haben Recht, ich wusste das ... albern mich. – Petruza

3

In PHP Sie einfach auf eine neue Zeile mit einem String fortgesetzt werden können.

z.

<?php 
    $var = 'this is 
    some text 
    in a var'; 
?> 
+0

$ var enthält die Zeilenumbrüche. –

+0

Punkt genommen, aber wenn HTML generiert wird, müssen Sie ein
Tag haben, um eine neue Zeile zu bezeichnen. Dies ist jedoch in einer