Derzeit online: ca. 94 User  
Spenden via PayPal PHP für dich ist auch als Buch erhältlich - im handlichen Format, zum Nachschlagen, Mitnehmen oder gemütlichen nebenbei Lesen. Mit noch mehr Informationen, zusätzlichen Beispielen und Übungsaufgaben.
Jetzt in der aktualisierten Version 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 z. B. 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 Alternativen dazu sind str_replace, und preg_replace. Letzteres erfordert allerdings die Verwendung von regulären Ausdrücken, was es etwas umständlicher macht.
str_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,\nda gewisse Zeichen in PHP\neine spezielle Bedeutung haben.";
$text = str_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. 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.

Die Funktion preg_replace funktioniert ganz ähnlich, nur dass sie reguläre Ausdrücke verwendet. Da das hier den Rahmen sprengen würde, nur kurz die Information, dass es dafür diese Funktion gibt, in den meisten Fällen aber str_replace ausreichen ist. 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 z. B. 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 = "PHP setzt viele \"Sonderzeichen\" ein,\nda gewisse Zeichen in PHP\neine spezielle Bedeutung haben.";
$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 ...

Autor: Claudia Unkelbach

=> Weiter
© 2001 - 2017 Claudia Unkelbach
Gießener Straße 75, 35396 Gießen