PHP / HTML: Einfache oder doppelte Anführungszeichen?

PHP

Benutzt man in PHP eher die einfachen oder die doppelten Anführungszeichen?

Früher war diese Frage noch relativ einfach zu beantworten, da ältere PHP-Versionen tatsächlich länger brauchten um festzustellen ob in einem String in doppelten Anführungszeichen ggf noch Variablen enthalten sind, die entsprechend ersetzt werden müssten, nutzte man in der Regel bevorzugt die einfachen Anführungszeichen, doch dieses Problem besteht in aktuellen PHP Versionen mittlerweile nicht mehr, einen Geschwindigkeitsunterschied kann es zwar in beide Richtungen geben (also mal ist die eine Variante etwas schneller, mal die andere), doch ist dieser so gering, dass man grundsätzlich bedenkenlos beide Varianten benutzen kann.

Allerdings verhalten sich einfache und doppelte Anführungszeichen natürlich immer noch unterschiedlich, so dass man sie nicht einfach wahllos austauschen kann, wie diese Beispiele zeigen:

$string = 'Hallo';

echo "$string Welt"; // Ausgabe: Hallo Welt
echo '$string Welt'; // Ausgabe: $string Welt
echo $string .' Welt'; // Ausgabe: Hallo Welt

Innerhalb von doppelten Anführungszeichen kann man also einfach Variablennamen benutzen und diese werden durch den Inhalt der Variablen ersetzt (was halt bei älteren PHP Versionen ohne internen OPcache noch mehr Leistung kostete), während der Inhalt bei einfachen Anführungszeichen dagegen “wörtlich” genommen und als “fertiger” String angesehen wird.

Somit ist es letztlich zwar Geschmackssache welche Variante man bevorzugt verwendet, doch sollte man sich dabei schon für eine davon entscheiden um nicht unnötig durcheinander in seinen Code zu bringen, ich benutze z.B. in der Regel immer die einfachen Anführungszeichen, auch wenn man dabei oft “aufwändiger” konkatenieren muss, ist es eben auch eindeutiger (bei den doppelten kann es z.B. bei zusammengesetzten Variablen schon mal zu Problemen kommen / unleserlich werden), einzige Ausnahme sind SQL Queries welche ich immer in doppelte Anführungszeichen setze, wobei ich auch dort konsequent konkateniere und nicht einfach so Variablen einfüge (wobei das eben wieder Ansichtssache ist, ich finde es einfach übersichtlicher).

HTML

In HTML sieht das Ganze nun ähnlich aus, nur, dass man sich einfach nur für eine Variante entscheiden muss, grundsätzlich sind beide nämlich absolut gültig, auch wenn doppelte Anführungszeichen hier eher üblich sind.

Worauf man aber achten muss, ist, wenn man Anführungszeichen innerhalb von Anführungszeichen verwenden will, um z.B. in einem HTML Attribut einer JavaScript Funktion einen Wert zu übergeben oder ähnliches, in dem Fall gilt es zu beachten, dass man innerhalb von einfachen Anführungszeichen die doppelten benutzt und umgekehrt:

altText('blubb')

HTML + PHP

Zuletzt gibt es natürlich noch den (*eher seltenen) Fall, dass man HTML innerhalb von PHP ausgeben möchte oder umgekehrt, gerade wenn man da z.B. noch Variablen unterbringen möchte sieht das schnell etwas unübersichtlich aus:

echo ''. $alt .'';

echo "\"$alt\"";

oder, imho besonders unübersichtlich, könnte man natürlich auch noch jede Variable einzeln in den HTML Tags ausgeben, aber darauf verzichte ich hier jetzt einmal.

Eine Alternative dazu wäre z.B. noch diese Variante:

echo "\'$alt\'";

dies würde natürlich grundsätzlich auch funktionieren, ist aber nicht so schön, wenn man, wie ich, bei einem echo normalerweise mit einfachen Anführungszeichen arbeitet, doch auch da gibt es noch eine alternative schreibweise, die ebenfalls gut funktioniert und u.U. auch noch bestimmte Fehler (mit falschen Datentypen z.B.) verhindert:

printf( '%2$s', $src, $alt);

Mag auf den ersten Blick etwas komplizierter erscheinen, aber wenn man sich einmal daran gewöhnt hat geht es mindestens genauso schnell wie die anderen Varianten und ist zudem noch etwas genauer, da man u.a. auch gezielt den gewünschten Datentyp angeben / festlegen kann etc.

Siehe dazu auch:
http://php.net/manual/de/function.printf.php
http://php.net/manual/de/function.sprintf.php


*
Grundsätzlich sollte man natürlich besser mit einem Template-System arbeiten, dann hat man diese Probleme gar nicht erst, das ist aber ja nicht immer möglich (z.B. bei fremden Projekten, an denen man eine kleine Änderung vornehmen soll) oder bei sehr kleinen Projekten / kurzen Scripten ggf auch einfach zu aufwändig.

Tags: , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.