I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
VS
Singlequotes
Singlequotes sind einfache Stringfunktionen, das bedeutet es wird weder erweitert, noch funktionieren besondere Formatmaskierungen (siehe Doublequotes)
<?php
echo 'das ist ein String';
echo 'das ist ein String
mit Zeilenumbruch im Quellcode';
echo 'das ist ein String mit \n (Newline) und "Doublequote"';
echo 'das ist ein String mit \\ einem backslash und \$ Dollar-Zeichen';
?>
dies erzeugt folgenden Quelltext. Achtung aus Schönheit wurde jedes echo in einer neuen Zeile begonnen. Original wird jedes Echo nach dem letzten geschrieben.
das ist ein String
das ist ein String
mit Zeilenumbruch im Quellcode
das ist ein String mit \n (Newline) und "Doublequote"
das ist ein String mit \ einem backslash und \$ Dollar-Zeichen
Wie man erkennt wird das Newline nicht übersetzt. Dies gilt auch für alle anderen Möglichkeiten, die es in doublequote gibt. Ebenfalls funktioniert es auch nicht, ein append auszuführen.
Das bedeuted, Variablen im Text werden als text ausgegeben und nicht mit dem eigentlichen Variableninhalt.
<?php
$testvariable = 'test';
echo 'das ist ein $testvariable';
?>
ergibt dann entsprechend
das ist ein $testvariable
Doublequotes
Doublequotes eignen sich hervorragen zum erweitern von Texten, zusätzlich erlauben Sie auch noch verschiedene Spezialcharakter.
- \n – linefeed (Zeilenumbruch)
- \r – carriage return (zurück zum Zeilenanfang)
- \t – tab (Tabulator)
- \v – vertical tab (vertikaler Tabulator seit PHP 5.2.5)
- \\ – backslash (\)
- \$ – dollar ($)
- \“ – doubleqoutes („)
Wie man sieht, muss man hier einiges Escapen, wenn man es innerhalb des Textes braucht.
<?php
echo "das ist ein String";
echo "das ist ein String
mit Zeilenumbruch im Quellcode";
echo "das ist ein String mit \n (Newline) und 'Singlequotes'";
echo "das ist ein String mit \\ einem backslash und \$ Dollar-Zeichen";
?>
dies erzeugt folgenden Quelltext. Achtung auch hier gilt, jedes Echo wird nach dem letzten geschrieben.
das ist ein String
das ist ein String
mit Zeilenumbruch im Quellcode
das ist ein String mit
(Newline) und 'Singlequotes'
das ist ein String mit \ einem backslash und $ Dollar-Zeichen
Wie man erkennt wird das \n übersetzt, also im Quelltext ist ein Zeilenumbruch. Dies gilt auch für alle anderen oben genannten Möglichkeiten (und noch viele mehr).
Ebenfalls funktioniert es auch, ein append auszuführen.
Das bedeuted, Variablen im Text werden, wenn existiert, mit dem entsprechenden Wert.
<?php
$testvariable = 'test';
echo "das ist ein $testvariable";
?>
ergibt dann entsprechend
das ist ein test
Dabei ist zu beachten, dass vor und nach der Variable ein Leerzeichen sein muss, oder das {} verwendet wird
<?php
$testvariable = 'test';
// geht nicht weil es nicht existiert
echo "das waren $testvariables";
// geht
echo "das waren {$testvariable}s";
echo "das waren ${testvariable}s";
?>
Möchte man Array- oder Objektwerte verwenden, sollte man hier die PHP-Dokumentation verwenden. Da hier einiges mehr schief gehen kann.
ein paar Beispiele (direkt von der PHP.NET-Seite):
<?php
// These examples are specific to using arrays inside of strings.
// When outside of a string, always quote array string keys and do not use
// {braces}.
// Show all errors
error_reporting(E_ALL);
$fruits = array('strawberry' => 'red', 'banana' => 'yellow');
// Works, but note that this works differently outside a string
echo "A banana is $fruits[banana].";
// Works
echo "A banana is {$fruits['banana']}.";
// Works, but PHP looks for a constant named banana first, as described below.
echo "A banana is {$fruits[banana]}.";
// Won't work, use braces. This results in a parse error.
echo "A banana is $fruits['banana'].";
// Works
echo "A banana is " . $fruits['banana'] . ".";
// Works
echo "This square is $square->width meters broad.";
// Won't work. For a solution, see the complex syntax.
echo "This square is $square->width00 centimeters broad.";
?>
Wann verwenden?
Ich persönlich verwende eigentlich immer Singleqotes, da ich hier gezwungen bin, sauberer zu arbeiten.
Zusätzlich ist aber zu sagen, dass sich Singlequotes sehr gut für HTML-Code eignen, da ich doubleqoutes nicht Escapen muss. Und das Escapen ist ja die Fehlerquelle Nummer eins.
<?php
echo '<div class="test" id="testdiv"></div>';
?>
Ich persönlich verwende das recht selten. da hier Fehler entstehen können, die durch sauberes Coden nicht entstehen.Zusätzlich ist aber zu sagen, dass ich doublequotes zum Beispiel für CSV-Exporte verwende, da dort die Möglichkeiten hilreich sind.
Ein Beispiel:
<?php
echo "Zeile1\twert1\twert2\twert3\n";
echo "Zeile2\twert1\twert2\twert3\n";
?>
Ok, der Tabulator ist ein schlechtes Beispiel, aber so siehts dann ungefähr aus:
Zeile1 wert1 wert2 wert3
Zeile2 wert1 wert2 wert3
VS
Heredocs
Nowdocs (ab PHP5.3)
Comming soon