Aus gesundheitlichen Gründen kann ich diese Seite nicht weiterpflegen, aktualisieren oder euch Support für eure PHP-Probleme anbieten. PHP für dich bleibt aber in seiner aktuellen Form erhalten und funktioniert nach wie vor als Einstieg in die PHP-Welt - gerade, wenn dich technischere Anleitungen bisher immer davon abgehalten haben.
Mehr dazu...
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