Start · Sprachen · PHP · Referenz · stripcslashes

stripcslashes

Funktion

Entfernt C-Stil-Escape-Sequenzen aus einem String, der zuvor mit <code>addcslashes()</code> maskiert wurde.

seit PHP 4.0.0 Kategorie: string

Signatur

stripcslashes(string $string): string

Beschreibung

stripcslashes() ist die Umkehrfunktion zu addcslashes(). Sie interpretiert C-Stil-Escape-Sequenzen wie \n, \t, \r, \\, \', \" sowie oktale (\NNN) und hexadezimale (\xNN) Zeichen-Escape-Sequenzen und ersetzt sie durch die entsprechenden Zeichen.

Die Funktion wird typischerweise eingesetzt, wenn Daten zuvor mit addcslashes() maskiert gespeichert oder übertragen wurden und vor der weiteren Verarbeitung wieder in ihre ursprüngliche Form gebracht werden müssen.

Wichtig: stripcslashes() ist nicht das Gegenstück zu addslashes(). Für addslashes()-maskierte Strings muss stattdessen stripslashes() verwendet werden. Die beiden Funktionen unterscheiden sich im Umfang der erkannten Escape-Sequenzen deutlich.

Erkannte Escape-Sequenzen umfassen unter anderem: \\ (Backslash), \a (Bell), \b (Backspace), \f (Form Feed), \n (Zeilenumbruch), \r (Wagenrücklauf), \t (Tabulator), \v (Vertikaler Tabulator), oktal-codierte Zeichen (\NNN) und hexadezimal-codierte Zeichen (\xNN).

Parameter

Name Typ Default Beschreibung
$string Pflicht string Der Eingabe-String, der C-Stil-Escape-Sequenzen enthält und demaskiert werden soll.

Rückgabewert

Typ
string
Beschreibung
Gibt den demaskierten String zurück, in dem alle erkannten C-Stil-Escape-Sequenzen durch die entsprechenden Zeichen ersetzt wurden. Unbekannte Escape-Sequenzen werden unverändert übernommen, wobei der führende Backslash entfernt wird.

Beispiele

Einfache Demaskierung von C-Stil-Escape-Sequenzen

<?php
$masked = addcslashes("Hallo\nWelt!\tTabulator", "\n\t");
echo $masked . PHP_EOL;
// Ausgabe: Hallo\nWelt!\tTabulator

$unmasked = stripcslashes($masked);
echo $unmasked;
// Ausgabe: Hallo
//          Welt!	Tabulator
Hallo\nWelt!\tTabulator Hallo Welt! Tabulator

Demaskierung hexadezimaler und oktaler Escape-Sequenzen

<?php
// Hexadezimal \x41 = 'A', \x42 = 'B'
$hexEncoded = '\x41\x42\x43';
echo stripcslashes($hexEncoded) . PHP_EOL;
// Ausgabe: ABC

// Oktal \101 = 'A', \102 = 'B', \103 = 'C'
$octEncoded = '\101\102\103';
echo stripcslashes($octEncoded) . PHP_EOL;
// Ausgabe: ABC
ABC ABC

Daten aus Datenbank oder Konfigurationsdatei wiederherstellen

<?php
// Simulierter gespeicherter Wert (z. B. aus einer Konfigurationsdatei)
$storedValue = 'Pfad: C:\\Users\\Max\\Dokumente';
echo 'Gespeichert:   ' . $storedValue . PHP_EOL;

$restoredValue = stripcslashes($storedValue);
echo 'Wiederhergestellt: ' . $restoredValue . PHP_EOL;
Gespeichert: Pfad: C:\Users\Max\Dokumente Wiederhergestellt: Pfad: C:\Users\Max\Dokumente

// Wichtig · Fallstricke

Verwechslungsgefahr: stripcslashes() ist nicht das Gegenstück zu addslashes(). Für mit addslashes() maskierte Strings muss stripslashes() verwendet werden. Das Verwechseln der Funktionen kann zu fehlerhafter Verarbeitung und im schlimmsten Fall zu Sicherheitslücken führen.

Magic Quotes (veraltet): In älteren PHP-Versionen (vor PHP 5.4) gab es die Einstellung magic_quotes_gpc, die eingehende Daten automatisch mit addslashes() maskierte. Das Gegenstück war stripslashes(), nicht stripcslashes(). Magic Quotes wurden in PHP 5.4 entfernt.

Unbekannte Escape-Sequenzen: Enthält der String unbekannte Escape-Sequenzen (z. B. \q), wird nur der Backslash entfernt und das folgende Zeichen bleibt erhalten (Ergebnis: q). Dies kann unerwünschte Nebenwirkungen haben.