1. Home
  2. Docs
  3. PHP
  4. PHP Strings
  5. PHP Escape Characters

PHP Escape Characters

PHP Escape Characters: In PHP sind Escape-Sequenzen spezielle Zeichenkombinationen, die innerhalb von Strings verwendet werden, um Zeichen zu repräsentieren, die andernfalls eine besondere Bedeutung hätten. Sie helfen, Sonderzeichen wie Anführungszeichen, Backslashes oder Steuerzeichen korrekt darzustellen und erlauben es, den String auf eine kontrollierte Weise zu formatieren.

Grundlegende Escape-Sequenzen

In PHP werden Escape-Sequenzen durch einen Backslash (\) eingeleitet. Diese werden insbesondere in Strings mit doppelten Anführungszeichen (" ") interpretiert. Einige häufig verwendete Escape-Sequenzen sind:

  • \n – Zeilenumbruch (Newline)
  • \r – Wagenrücklauf (Carriage Return)
  • \t – Tabulator (Tab)
  • \" – Doppeltes Anführungszeichen
  • \\ – Backslash selbst
<?php
$text = "Zeile 1\nZeile 2";
echo $text;
// Ausgabe:
// Zeile 1
// Zeile 2
?>

Verwendung von Escape-Sequenzen in doppelten und einfachen Anführungszeichen

PHP interpretiert Escape-Sequenzen nur innerhalb von doppelten Anführungszeichen (" "). Bei einfachen Anführungszeichen (' ') werden sie als reguläre Zeichen ausgegeben, außer dem Backslash selbst (\\) und dem einfachen Anführungszeichen (\').

<?php
$text1 = "Das ist ein \"Beispiel\" mit doppelten Anführungszeichen.";
$text2 = 'Das ist ein \'Beispiel\' mit einfachen Anführungszeichen.';
echo $text1; // Ausgabe: Das ist ein "Beispiel" mit doppelten Anführungszeichen.
echo $text2; // Ausgabe: Das ist ein 'Beispiel' mit einfachen Anführungszeichen.
?>

Steuerzeichen: Zeilenumbrüche und Tabs

Zeilenumbrüche (\n) und Tabs (\t) sind besonders nützlich für die Strukturierung und Formatierung von Textausgaben. Diese Zeichen ermöglichen es, Text in mehreren Zeilen darzustellen oder bestimmte Inhalte optisch einzurücken.

<?php
$text = "Produkt:\tPreis:\nApfel\t\t1.00\nBanane\t\t0.50";
echo $text;
// Ausgabe:
// Produkt:    Preis:
// Apfel       1.00
// Banane      0.50
?>

Unicode- und Sonderzeichen mit \u-Notation

Seit PHP 7 bietet die "\u{code}"-Syntax eine Möglichkeit, Unicode-Zeichen in Strings darzustellen. Diese Notation kann beispielsweise für Emoji, Sonderzeichen oder andere Sprachzeichen verwendet werden.

<?php
$text = "\u{1F600} Willkommen!"; // Unicode für ein lachendes Emoji
echo $text; // Ausgabe: 😀 Willkommen!
?>

Hierbei steht der Code 1F600 für das Emoji-Zeichen „lachendes Gesicht“.

Backslashes in Dateipfaden und regulären Ausdrücken

Da der Backslash (\) als Escape-Zeichen dient, müssen Backslashes in Dateipfaden oder regulären Ausdrücken oft doppelt angegeben werden.

Beispiel: Dateipfade

<?php
$dateipfad = "C:\\Benutzer\\Öffentlich\\Dokumente";
echo $dateipfad; // Ausgabe: C:\Benutzer\Öffentlich\Dokumente
?>

Beispiel: Reguläre Ausdrücke

Backslashes in regulären Ausdrücken, z. B. zur Suche nach speziellen Zeichen, müssen ebenfalls verdoppelt werden.

<?php
$text = "Beispiel mit Zahl: 123";
if (preg_match("/\d+/", $text)) {
    echo "Zahl gefunden!";
}
// Ausgabe: Zahl gefunden!
?>

Hier wird \d als Escape-Sequenz für Ziffern verwendet, weshalb es doppelt geschrieben werden muss (\\d).

Verwendung von addslashes() und stripslashes()

Bei der Arbeit mit Datenbanken und Benutzereingaben können Sonderzeichen durch addslashes() automatisch escaped werden, um SQL-Injections vorzubeugen. stripslashes() entfernt diese Backslashes wieder.

<?php
$benutzereingabe = "It's a wonderful day!";
$escaped = addslashes($benutzereingabe); // Escape-Sonderzeichen
echo $escaped; // Ausgabe: It\'s a wonderful day!

// Entfernt die hinzugefügten Escape-Zeichen
echo stripslashes($escaped); // Ausgabe: It's a wonderful day!
?>

Diese Funktionen sind besonders hilfreich für Benutzereingaben, die in SQL-Datenbanken gespeichert werden sollen.

Häufig gestellte Fragen

Wie kann ich verhindern, dass PHP Escape-Sequenzen in einem String interpretiert?

Verwenden Sie einfache Anführungszeichen (' '), da PHP Escape-Sequenzen in diesen nicht interpretiert. Alternativ können Sie doppelten Backslash verwenden (\\).

Warum muss ich den Backslash in Dateipfaden verdoppeln?

Da \ in PHP als Escape-Zeichen dient, müssen Sie es verdoppeln, um den Backslash als Zeichen darzustellen.

Gibt es eine Möglichkeit, spezielle Zeichen ohne Escape-Sequenzen in Datenbanken zu speichern?

Ja, in modernen Datenbanken können vorbereitete Statements (prepared statements) verwendet werden, um Benutzereingaben sicher ohne manuelles Escaping zu speichern.