Start · Sprachen · PHP · Referenz · stripslashes

stripslashes

Funktion

Entfernt Maskierungszeichen (Backslashes) aus einem String und gibt den bereinigten String zurück.

seit PHP 4.0.0 Kategorie: string

Signatur

stripslashes(string $string): string

Beschreibung

stripslashes() entfernt Backslash-Maskierungen aus einem String. Dabei wird jeder einfache Backslash (\) entfernt, doppelte Backslashes (\\) werden zu einem einfachen Backslash reduziert. Die Funktion ist das Gegenstück zu addslashes().

Historisch wurde stripslashes() hauptsächlich verwendet, um Daten zu bereinigen, die durch die – inzwischen entfernte – Magic Quotes-Funktion von PHP automatisch maskiert worden waren. Seit PHP 5.4.0 existiert Magic Quotes nicht mehr, weshalb der klassische Anwendungsfall entfallen ist.

Heute ist die Funktion noch sinnvoll, wenn man explizit mit addslashes() maskierte Strings wieder in ihren Originalzustand versetzen möchte, beispielsweise beim Lesen von Konfigurationsdateien oder beim Verarbeiten von Formulardaten, die manuell maskiert wurden.

Für die sichere Übergabe von Werten an Datenbanken sollten stattdessen vorbereitete Statements (Prepared Statements) mit PDO oder MySQLi verwendet werden – stripslashes() ist kein geeignetes Werkzeug zur SQL-Injection-Prävention.

Parameter

Name Typ Default Beschreibung
$string Pflicht string Der Eingabe-String, aus dem Backslash-Maskierungen entfernt werden sollen.

Rückgabewert

Typ
string
Beschreibung
Gibt den bereinigten String zurück, in dem Backslashes entfernt und doppelte Backslashes zu einfachen Backslashes reduziert wurden.

Beispiele

Einfache Maskierungen entfernen

<?php
$masked = "Er sagte: \"Hallo Welt!\"";
echo $masked . PHP_EOL;

$clean = stripslashes($masked);
echo $clean . PHP_EOL;

// Doppelter Backslash wird zu einfachem Backslash
$path = "C:\\\\Windows\\\\System32";
echo stripslashes($path) . PHP_EOL;
Er sagte: \"Hallo Welt!\" Er sagte: "Hallo Welt!" C:\Windows\System32

Zusammenspiel mit addslashes()

<?php
$original = "O'Brien & \"Partner\"";
$escaped  = addslashes($original);
echo "Maskiert:   " . $escaped . PHP_EOL;

$restored = stripslashes($escaped);
echo "Wiederhergestellt: " . $restored . PHP_EOL;
echo "Gleich mit Original: " . ($restored === $original ? 'Ja' : 'Nein') . PHP_EOL;
Maskiert: O\'Brien & \"Partner\" Wiederhergestellt: O'Brien & "Partner" Gleich mit Original: Ja

Array-Werte rekursiv bereinigen

<?php
// stripslashes arbeitet nur auf Strings; für Arrays wird array_map benötigt
function stripslashes_deep(array $data): array {
    return array_map(function ($value) {
        return is_array($value)
            ? stripslashes_deep($value)
            : stripslashes($value);
    }, $data);
}

$input = [
    'name'  => "Max M\\üller",
    'quote' => "Er sagte \"Hallo\"",
];

$clean = stripslashes_deep($input);
print_r($clean);
Array ( [name] => Max M\üller [quote] => Er sagte "Hallo" )

// Wichtig · Fallstricke

Magic Quotes (veraltet): Vor PHP 5.4 wurden Eingabedaten über $_GET, $_POST und $_COOKIE durch die Magic-Quotes-Funktion automatisch mit addslashes() maskiert. stripslashes() wurde häufig eingesetzt, um diese Maskierung rückgängig zu machen. Da Magic Quotes seit PHP 5.4.0 vollständig entfernt wurde, ist dieser Anwendungsfall obsolet.

Kein Sicherheitsmechanismus: stripslashes() darf nicht zur Absicherung von SQL-Abfragen verwendet werden. Verwende stattdessen Prepared Statements mit PDO oder MySQLi, um SQL-Injection zu verhindern.

Nur für Strings: Die Funktion arbeitet ausschließlich auf Strings. Arrays müssen – wie im Beispiel gezeigt – rekursiv mit array_map() verarbeitet werden.