Slashes in einem String hinzufügen oder entfernen (Thema: PHP Beispiele)

Verfahren, um Schrägstriche (Slashes) bestimmten Zeichen in einem String voranzustellen, oder diese wieder zu entfernen.

1. Slashes hinzufügen mit addslashes()

Zum Hinzufügen von Backslashes („\”) zu einem String kann addslashes() verwendet werden. Die Funktion stellt jeweils jedem Backslash („\”), doppelten Anführungszeichen („"”) und einfachen Anführungszeichen („'”) ein Backslash voran.

PHP-Code
<?php
	$str = 'Dieser String enthaelt "Anfuehrungszeichen" und ein \\ (Schraegstrich, Backslash).';
	var_dump($str);
	var_dump(addslashes($str));
?>

HTML-Code: Ausgabe
string(81) "Dieser String enthaelt "Anfuehrungszeichen" und ein \ (Schraegstrich, Backslash)."
string(84) "Dieser String enthaelt \"Anfuehrungszeichen\" und ein \\ (Schraegstrich, Backslash)."


2. Slashes mit stripslashes() entfernen

Um Backslashes wieder zu entfernen kann stripslashes() verwendet werden. Die Funktion kehrt den Effekt von addslashes() um.

PHP-Code
<?php
	$str = 'Dieser String enthaelt "Anfuehrungszeichen" und ein \\ (Schraegstrich, Backslash).';
	$str2 = addslashes($str);
	var_dump($str2);
	var_dump(stripslashes($str2));
?>

HTML-Code: Ausgabe
string(84) "Dieser String enthaelt \"Anfuehrungszeichen\" und ein \\ (Schraegstrich, Backslash)."
string(81) "Dieser String enthaelt "Anfuehrungszeichen" und ein \ (Schraegstrich, Backslash)."


3. Beliebige Zeichen escapen mit addcslashes()

Backslashes können auch zu selbst festgelegten Zeichen hinzugefügt werden. Das kann beispielsweise dann nützlich sein, wenn man nur einfache Anführungszeichen escapen will.

PHP-Code
<?php
	$str = 'Das ist ein sogenannter "String" bzw. \'String\'.';
	$str2 = addcslashes($str, "'");
	$javascript = "doSomething('$str2');";
	var_dump($javascript);
?>

HTML-Code: Ausgabe
string(65) "doSomething('Das ist ein sogenannter "String" bzw. \'String\'.');"


4. SQL für MySQL escapen mit mysqli:real_escape_string()

Soll ein String in die Datenbank eingetragen werden, dann ist mysqli::real_escape_string() vorzuziehen (falls MySQL als Datenbank verwendet wird), da diese besser darin ist, SQL-Injections vorzubeugen. Im Alltag wird man sehr häufig mit dieser Methode arbeiten.

PHP-Code
<?php
	$benutzerEingabe = 'Das ist ein sogenannter "String" bzw. \'String\'.';
	$benutzerEingabe = mysqli::real_escape_string($benutzerEingabe);
?>

5. Strings in regulären Ausdrücken escapen

Soll ein String als Teil eines regulären Ausdrucks (regular expression) verwendet werden und könnte dieser Steuerzeichen enthalten, dann können diese mit preg_quote() escapet werden.

PHP-Code
<?php
	$benutzerEingabe = 'hello?';
	$regex = '('.preg_quote($benutzerEingabe).')+'; // die Benutzereingabe ein Mal oder oefter
	$teststring = 'hello?hello?';
	var_dump(preg_quote($benutzerEingabe), preg_match('/'.$regex.'/u', $teststring));
?>

HTML-Code: Ausgabe
string(7) "hello\?"
int(1)


In der Praxis kommt es eher selten vor, dass preg_quote verwendet wird, da man in der Regel die Benutzereingaben auf einen bestimmten regulären Ausdruck hin überprüft und nicht besagte Eingaben als Teil eines solchen regulären Ausdrucks verwendet. Als nützlich kann sich preg_quote erweisen, wenn man in einem regulären Ausdruck nach vielen Zeichen sucht, die gleichzeitig auch Steuerungszeichen sind. Jedes dieser Zeichen zu escapen kann sehr unübersichtlich werden, sodass preg_quote() in diesen Fällen vorzuziehen ist.

PHP-Code
<?php
	$str = 'Dieser String enthält ~~*Sonderzeichen*~~!';
	var_dump($str);

	$zuErsetzendeSonderzeichen = '*+~#?=)(&%$§"!-.,';
	$regex = '['.preg_quote($zuErsetzendeSonderzeichen).']+';

	$str = preg_replace('/'.$regex.'/u', '', $str);
	var_dump($str);
?>

HTML-Code: Ausgabe
string(43) "Dieser String enthält ~~*Sonderzeichen*~~!"
string(36) "Dieser String enthält Sonderzeichen"


Kommentare (0)

Von neu nach alt