Signatur
Beschreibung
addcslashes() durchsucht den übergebenen String und fügt vor allen Zeichen, die in $characters angegeben sind, einen Backslash (\) ein. Die Funktion ist nützlich, wenn Strings für Kontexte vorbereitet werden müssen, die C-ähnliches Escaping erwarten – etwa bestimmte Datenbankabfragen, Konfigurationsdateien oder eigene DSLs.
Im Parameter $characters können einzelne Zeichen oder Bereiche im Format A..Z (zwei Punkte zwischen Start- und Endzeichen) angegeben werden. Bereiche werden anhand der ASCII-Werte der Zeichen aufgelöst. So steht A..Z für alle Großbuchstaben von A bis Z.
Zeichen mit einem ASCII-Wert unter 32 oder über 126 werden mit einer oktalen Darstellung escapt (z. B. \007). Zu beachten ist, dass auch die Zeichen \0, \a, \b, \f, \n, \r, \t und \v besondere Darstellungen erhalten, wenn sie in den Zeichenbereich fallen.
Das Gegenstück zu addcslashes() ist stripcslashes(), das die eingefügten Backslashes wieder entfernt. Für den allgemeineren Einsatz – etwa das Escaping in SQL oder HTML – sind spezialisierte Funktionen wie mysqli_real_escape_string() oder htmlspecialchars() vorzuziehen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der Eingabe-String, in dem Zeichen mit einem Backslash versehen werden sollen. | |
| $characters Pflicht | string | Eine Liste der zu escapenden Zeichen. Bereiche können mit zwei Punkten angegeben werden, z. B. a..z für alle Kleinbuchstaben. Die Angabe ist case-sensitiv. |
Rückgabewert
$characters definierten Zeichen ein Backslash eingefügt wurde.Beispiele
Einfaches Escaping einzelner Zeichen
<?php
$text = "Hallo Welt! Wie geht's?";
$escaped = addcslashes($text, "!'?");
echo $escaped;
Escaping eines Zeichenbereichs (alle Großbuchstaben)
<?php
$text = "PHP Ist Toll";
$escaped = addcslashes($text, 'A..Z');
echo $escaped;
Kombination aus Einzelzeichen und Bereichen
<?php
// Alle Kleinbuchstaben und das @-Zeichen escapen
$email = "user@example.com";
$escaped = addcslashes($email, 'a..z@');
echo $escaped;
// Wichtig · Fallstricke
Sicherheitshinweis: addcslashes() ist keine geeignete Funktion zum Schutz vor SQL-Injection oder XSS. Für SQL sollte stets mysqli_real_escape_string() oder PDO mit Prepared Statements verwendet werden; für HTML-Ausgaben ist htmlspecialchars() korrekt.
Vorsicht bei Bereichen: Der Bereich wird anhand der ASCII-Tabelle aufgelöst. Ein Bereich wie A..z enthält nicht nur Buchstaben, sondern auch die dazwischenliegenden Sonderzeichen ([, \, ], ^, _, `). Ungewollte Zeichen können so unbeabsichtigt escapt werden.
Wenn $characters einen Backslash (\) enthält, wird dieser ebenfalls escapt, was zu doppelten Backslashes im Ergebnis führen kann.