de.comp.lang.php.* FAQ

16.13. Wieso wird aus " plötzlich \" und wie geht das wieder weg?

Antwort von Johannes Frömter

Das sind Escapes, die vor bestimmten Sonderzeichen stehen, um diese zu "entschärfen". Verantwortlich für dieses Verhalten ist die Funktion magic_quotes von PHP, die üblicherweise in der php.ini eingestellt wird. Dabei gilt magic_quotes_gpc für Daten, die per GET, POST oder COOKIE übergeben werden und magic_quotes_runtime für Daten, die aus Datenbanken, Dateien oder anderen externen Quellen kommen. Escaped werden ' (single quote), " (double quote), \ (backslash) und NUL (das Null-Byte).

Um die Escape-Zeichen wieder zu entfernen, benutzt man stripslashes() ; manuell hinzufügen kann man sie mittels addslashes() .

Die Konfiguration von magic_quotes kann man an verschiedenen Stellen beeinflussen:

php.ini:
magic_quotes_runtime = on|off
magic_quotes_gpc     = on|off

.htaccess, httpd.conf:
php_flag magic_quotes_runtime on|off
php_flag magic_quotes_gpc     on|off

.php
ini_set("magic_quotes_runtime", 0|1);
// magic_quotes_gpc geht hier nicht

In Verbindung mit Sybase-Datenbanken (d.h. bei zusätzlich gesetzter Option magic_quotes_sybase ) gibt es eine Besonderheit: Hier werden single quotes nicht mit einem Backslash, sondern mit einem weiteren single quote escaped.

Valid HTML 4.01! Valid CSS!

16.13. Wieso wird aus " plötzlich \" und wie geht das wieder weg?
http://www.php-faq.de/q/q-magic-quotes.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team