PHP-Strings können nicht nur auf zwei , sondern auf vier Arten angegeben werden.
- Einfache Zeichenfolgen in Anführungszeichen zeigen die Dinge fast vollständig "wie sie sind" an. Variablen und die meisten Escape-Sequenzen werden nicht interpretiert. Die Ausnahme ist, dass Sie zum Anzeigen eines wörtlichen einfachen Anführungszeichens einen Schrägstrich
\'
und bei einem hinteren Schrägstrich einen weiteren umgekehrten Schrägstrich verwenden können\\
( also werden auch Zeichenfolgen in einfachen Anführungszeichen analysiert ).
- Zeichenfolgen in doppelten Anführungszeichen zeigen eine Vielzahl von maskierten Zeichen (einschließlich einiger regulärer Ausdrücke) an, und Variablen in den Zeichenfolgen werden ausgewertet. Ein wichtiger Punkt hierbei ist, dass Sie geschweifte Klammern verwenden können, um den Namen der Variablen zu isolieren, die ausgewertet werden soll . Nehmen wir zum Beispiel an, Sie haben die Variable
$type
und möchtenecho "The $types are"
. Das wird nach der Variablen suchen$types
. Um dies zuecho "The {$type}s are"
umgehen, können Sie die linke Klammer vor oder nach dem Dollarzeichen setzen. Schauen Sie sich das Parsen von Zeichenfolgen an, um zu sehen, wie Array-Variablen und dergleichen verwendet werden.
- Die Heredoc- Zeichenfolgensyntax funktioniert wie Zeichenfolgen in doppelten Anführungszeichen. Es beginnt mit
<<<
. Nach diesem Operator wird eine Kennung und anschließend eine neue Zeile angegeben. Die Zeichenfolge selbst folgt und dann dieselbe Kennung erneut, um das Zitat zu schließen. Sie müssen Anführungszeichen in dieser Syntax nicht umgehen.
- Die String-Syntax von Nowdoc (seit PHP 5.3.0) funktioniert im Wesentlichen wie Zeichenfolgen in einfachen Anführungszeichen. Der Unterschied besteht darin, dass nicht einmal einfache Anführungszeichen oder Backslashes maskiert werden müssen. Ein Nowdoc wird mit der gleichen
<<<
Reihenfolge identifiziert, die für Heredocs verwendet wird, aber die folgende Kennung ist in einfache Anführungszeichen eingeschlossen, z<<<'EOT'
. In nowdoc wird keine Analyse durchgeführt.
Anmerkungen:
Einfache Anführungszeichen in einfachen Anführungszeichen und doppelte Anführungszeichen in doppelten Anführungszeichen müssen maskiert werden:
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
Geschwindigkeit:
Ich würde nicht zu viel Gewicht darauf legen, dass einfache Anführungszeichen schneller sind als doppelte Anführungszeichen. In bestimmten Situationen sind sie wahrscheinlich schneller. In diesem Artikel wird eine Art und Weise erläutert, in der einfache und doppelte Anführungszeichen seit PHP 4.3 im Wesentlichen gleich schnell sind ( Useless Optimizations
unten, Abschnitt C
). Außerdem enthält diese Benchmark-Seite einen Vergleich zwischen einfachen und doppelten Anführungszeichen. Die meisten Vergleiche sind gleich. Es gibt einen Vergleich, bei dem doppelte Anführungszeichen langsamer sind als einfache Anführungszeichen.
${variablename}
. H.\n
, alles andere in meinemPHP
Code steht in einfachen Anführungszeichen."
doppelten Anführungszeichen gehört der Vergangenheit an. Aktualisierungen haben dazu geführt, dass die Verarbeitung von doppelten Anführungszeichen heutzutage so schnell wie in extremen Fällen ist.Die Dinge werden in doppelten Anführungszeichen, aber nicht in einfachen Anführungszeichen bewertet:
quelle
$mailbody = 'I want a line break:\nDone.';
besteht darin, das\n
Leben am Leben zu erhalten. Während:$mailbody = "I want a line break:\nDone.";
wird den Zeilenumbruch analysieren.$testWithAsciiAndUtf8Characters = "\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!";
$simpleTest = '\x48\x41\x4c\114\117 \u{0147}\u{012B}\u{0144}\u{014D}!';
Zeichenfolgen in$testWithAsciiAndUtf8Characters
wurden in Zeichenfolgen mit echten Buchstaben umgewandelt.'
Einfach zitiertDie einfachste Möglichkeit, eine Zeichenfolge anzugeben, besteht darin, sie in einfache Anführungszeichen zu setzen. Ein einfaches Anführungszeichen ist im Allgemeinen schneller und alles, was darin zitiert wird, wird als einfache Zeichenfolge behandelt.
Beispiel:
"
Doppelt zitiertVerwenden Sie in PHP doppelte Anführungszeichen, um zu vermeiden, dass der Punkt zum Trennen von Code verwendet werden muss (Hinweis: Verwenden Sie geschweifte Klammern
{}
, um Variablen einzuschließen , wenn Sie den.
Operator concatenation ( ) nicht in Zeichenfolgen verwenden möchten ).Beispiel:
Gibt es in PHP einen Leistungsvorteil für einfache Anführungszeichen gegenüber doppelten Anführungszeichen?
Ja. Es ist etwas schneller, einfache Anführungszeichen zu verwenden.
PHP verwendet keine zusätzliche Verarbeitung, um zu interpretieren, was im einfachen Anführungszeichen enthalten ist. Wenn Sie doppelte Anführungszeichen verwenden, muss PHP analysieren, um zu überprüfen, ob die Zeichenfolge Variablen enthält.
quelle
\'
darin, ein einzelnes Apostroph für die Verwendung in der Zeichenfolge\\'
zu maskieren (oder den Backslash anzuzeigen). Beachten Sie, dass herkömmliche Escape-Sequenzen, wie z. B.\n
NICHT, auf das Zeilenumbruchzeichen analysiert werden. PHP-Dokumente zu StringsIn einer Zeichenfolge in einfachen Anführungszeichen werden keine Variablen interpretiert. Eine Zeichenfolge in doppelten Anführungszeichen.
Eine Zeichenfolge in doppelten Anführungszeichen kann auch Apostrophe ohne umgekehrte Schrägstriche enthalten, während eine Zeichenfolge in einfachen Anführungszeichen nicht umschlossene Anführungszeichen enthalten kann.
Die Zeichenfolgen in einfachen Anführungszeichen sind zur Laufzeit schneller, da sie nicht analysiert werden müssen.
quelle
In PHP sind beide
'my name'
und"my name"
Zeichenfolgen. Weitere Informationen finden Sie im PHP-Handbuch .Was Sie wissen sollten, sind
In PHP, Apostroph Menschen verwenden einen konstanten String zu definieren, wie
'a'
,'my name'
,'abc xyz'
, während doppelte Anführungszeichen mit einer Zeichenfolge zu definieren , enthalten Bezeichner wie"a $b $c $d"
.Und eine andere Sache ist,
ist schneller als
aber
ist langsamer als
Dies gilt auch für andere verwendete Zeichenfolgen.
quelle
Beispiel für einfache, doppelte, heredoc- und nowdoc-Anführungszeichen
quelle
In PHP wird Text in einfachen Anführungszeichen als Zeichenfolgenwert betrachtet, und Text in doppelten Anführungszeichen analysiert die Variablen, indem sie ihren Wert ersetzen und verarbeiten.
Hier wird der Wert durch doppelte Anführungszeichen analysiert, und einfache Anführungszeichen werden als Zeichenfolgenwert betrachtet (ohne die
$test
Variable zu analysieren .)quelle
Beide Arten von eingeschlossenen Zeichen sind Zeichenfolgen. Eine Art von Zitat wird zweckmäßigerweise verwendet, um die andere Art von Zitat einzuschließen.
"'"
und'"'
. Der größte Unterschied zwischen den Anführungszeichen besteht darin, dass eingeschlossene Bezeichnerreferenzen für doppelte Anführungszeichen, jedoch nicht für einfache Anführungszeichen eingesetzt werden.quelle
Der Unterschied zwischen der Verwendung von einfachen Anführungszeichen und doppelten Anführungszeichen in PHP besteht darin, dass wenn wir einfache Anführungszeichen in der Echo-Anweisung verwenden, diese als Zeichenfolge behandelt werden. ... aber wenn wir den Variablennamen in doppelte Anführungszeichen eingeben, wird der Wert dieser Variablen zusammen mit der Zeichenfolge ausgegeben.
quelle
Hier einige Möglichkeiten von einfachen und doppelten Anführungszeichen mit Variablen
quelle
Eine Sache:
Es ist sehr wichtig zu beachten, dass die Zeile mit der abschließenden Kennung von Heredoc keine anderen Zeichen als ein Semikolon (;) enthalten darf . Dies bedeutet insbesondere, dass der Bezeichner möglicherweise nicht eingerückt ist und vor oder nach dem Semikolon keine Leerzeichen oder Tabulatoren vorhanden sein dürfen .
Beispiel:
quelle
Vielleicht bin ich ein bisschen spät dran und ein bisschen abseits des Themas, aber hier ist es trotzdem:
Sie müssen aufgrund des Inhalts Ihrer Zeichenfolge nicht unbedingt wählen zwischen:
alert("It's \"game\" time.");
oderalert('It\'s "game" time.');
Wenn Sie mit der Verwendung der englischen Anführungszeichen und dem richtigen Zeichen für das Apostroph vertraut sind, können Sie entweder doppelte oder einfache Anführungszeichen verwenden, da dies keine Rolle mehr spielt:
alert("It’s “game” time.");
undalert('It’s “game” time.');
quelle