Es ist geschafft! PHP für dich ist ab sofort auch als Buch erhältlich. Endlich im handlichen Format, zum Nachschlagen, mitnehmen oder gemütlich nebenbei lesen. Mit noch mehr Informationen und zusätzlichen Beispielen!
Jetzt bei Amazon oder BoD bestellen!
PHP
Ersetze \" doch bitte...
... korrekt mit ".
Wie bereits erwähnt werden in PHP Anführungszeichen durch Backslash Anführungszeichen geschrieben und auch ein Zeilenumbruch wird durch ein solches Sonderzeichen "maskiert". Das wirkt sich jedoch nicht nur darauf aus, das wir beim Füllen einer Variable darauf achten müssen, sondern auch dann, wen zB Text aus einer Textarea (oder auch aus einer Datei oder Datenbank) übernommen wird.
PHP setzt viele "Sonderzeichen" ein,
da gewisse Zeichen in PHP
eine spezielle Bedeutung haben.
Wird dieser Text in PHP auf irgendeine Art übergeben, schaut er eigentlich so aus (keine Zeilenumbrüche bei \n - die wurden nur wegen der Übersichtlichkeit hinzugefügt):
PHP setzt viele \"Sonderzeichen\" ein,
\n
da gewisse Zeichen in PHP
\n
eine spezielle Bedeutung haben.
Zum einen wollen wir aber nicht diese komischen \n in unserem Text haben, dann hätten wir gerne statt der \n richtige Zeilenumbrüche, die auch in HTML sichtbar sind (also <br>) und zum Schluß wollen wir auch noch statt "spezielle" "besondere" schreiben.
Fangen wir mal beim letzten Punkt an. Es gibt in PHP verschiedene Möglichkeiten, Text zu ersetzen.
Meine bevorzugte Variante ist ereg_replace. ereg_replace ist ab PHP 5.3.0 als veraltet eingestuft und wird mit PHP 6 entfernt werden. Es sollte daher nicht mehr verwendet werden. Die Alternative dazu ist
preg_replace, das allerdings die Verwendung von regulären Ausdrücken erfordert, was es etwas umständlicher macht.
preg_replace(Suche,Ersetze,betroffene Variable)
Machen wir mal ein Beispiel dazu und speichern den oben angeführten Text in eine Variable namens
text und ersetzen dann das Wort "spezielle" durch "besondere" bevor wir den Text ausgeben.
<?php
$text = "PHP setzt viele \"Sonderzeichen\" ein,
da gewisse Zeichen in PHP
eine spezielle Bedeutung haben.";
$text = preg_replace("/spezielle/","besondere",$text);
?>
Wir überschreiben die Variable
text mit dem neuen Text, der dadurch entsteht, dass PHP innerhalb der Variable
text (als letztes in der Klammer festgelegt) nach "spezielle" sucht und dieses durch "besondere" ersetzt. Der Such- und Ersetztext muss in Anführungszeichen geschrieben werden, außerdem muss man sich beim Suchtext an die Regeln für reguläre Ausdrücke halten. Da das hier den Rahmen sprengen würde, nur kurz die Information, dass wir deswegen vor und nach unserem Suchbegriff ein / als Begrenzungszeichen gesetzt haben. Weitere Informationen über reguläre Ausdrücke findest du im hervorragenden
Tutorial zu regulären Ausdrücken von Daniel Fett.
Würden wir jetzt mit echo den Text ausgeben würde dort stehen
PHP setzt viele "Sonderzeichen" ein, da gewisse Zeichen in PHP eine besondere Bedeutung haben.
Wenn wir den Text jetzt aber nicht direkt in eine Variable geschrieben hätten, sondern zB von einem Formular übergeben bekommen hätten, würde da statt
PHP setzt viele "Sonderzeichen" ein... plötzlich
PHP setzt viele \"Sonderzeichen\" ein... stehen. Und außerdem wollen wir eigentlich auch die Zeilenumbrüche in unserem ausgegebenen Text haben, die ja jetzt einfach verschluckt werden, weil sie keine HTML-Anweisungen sind.
Für beide Probleme gibt es in PHP eine fertige Funktion.
Um die Zeilenumbrüche hinein zu bekommen verwenden wir die Funktion
nl2br. Dabei wird wiederum die Variable
text überschrieben. Die Funktion lautet
nl2br und in Klammer wird die Variable angegeben, bei der die \n durch <br> ersetzt werden sollen.
<?php
$text = nl2br($text);
?>
Jetzt sieht unser Text so aus:
PHP setzt viele \"Sonderzeichen\" ein,
da gewisse Zeichen in PHP
eine besondere Bedeutung haben.
Es ist wichtig, dass
nl2br vor dem nächsten Befehl verwendet wird - sonst funktioniert er nämlich nicht mehr, da wir im nächsten Schritt alle Backslashes entfernen.
Und auch hierfür gibt es bereits eine fertige Funktion. Diese nennt sich
stripslashes und funktioniert genauso wie
nl2br. Die alte Variable wird durch den neuen Text überschrieben, der dadurch entsteht, dass die Funktion
stripslashes auf die Variable
text (in Klammer angeführt) angewendet wird.
<?php
$text = stripslashes($text);
?>
Und jetzt schaut unser Text endlich so aus, wie wir ihn haben wollten:
PHP setzt viele "Sonderzeichen" ein,
da gewisse Zeichen in PHP
eine besondere Bedeutung haben.
Der gesamte Code sieht nun so aus:
<?php
$text = preg_replace("/spezielle/","besondere",$text);
$text = nl2br($text);
$text = stripslashes($text);
echo $text;
?>
Und jetzt schauen wir uns endlich an, was Datum und Uhrzeit können ...