preg_replace anführungszeichen erlauben

largo666

Mitglied
Hi,

ich hab folgendes Problem:

Die Eingabe des Users soll mit preg_replace bearbeitet werden.
Es sollen alle zeichen die in dem negierten code stehen erlaubt werden.

Ich hab mir n Ast abgesucht aber nichts dazu gefunden wie man Anführungszeichen in einem negierten preg_replace einbindet.

Php denkt leider immer das es ein Teil eines php codes ist. Wenn ich es mit \" versuche zeigt er mir im Auszugebenden Text den Slash vor dem Anführungszeichen mit an. Was natürlich nicht gewünscht ist. Ich hab auch schon versucht den Slash zu eliminieren mit \\" hat aber auch nicht funktioniert.

Hier der Code den ich verwenden möchte:
PHP:
$var = preg_replace("![^a-zA-Z-öäü ßÖÄÜ´]!is","",$var);

Vielleicht habt ihr ja eine Idee.
 
Da muss noch ein drittes Backslash davor, da du es hier mit einer doppelten Maskierung zu tun hast: einmal musst du das Backslash und das Anführungszeichen für PHP maskieren, damit du dann am Ende ein Anführungszeichen und einen Backslash hast, wobei letzterer das Anführungszeichen für den regulären Ausdruck maskiert.
 
Schon mit Single-Quotes um das Pattern versucht statt Double-Quotes?

PHP:
$var = preg_replace('![^a-zA-Z-öäü ßÖÄÜ´"]!is','',$var);
 
Zuletzt bearbeitet:
$var kommt per POST aus einem Formular und enthält text zb.: "Meine Name ist Karl"
Die Ausgabe mit dem jetzigen veruchen war: \"Meine Name ist Karl\"

Ich hab folgende Varianten versucht: ( " ) (\") (\\") ( \\\") <-- natürlich ohne die Klammern.
Beim ersten hat php das " als phpcode interpretiert
und bei allen anderen kahm als Ausgabe immer \"

magic quotes muss ich eben checken.

EDIT: magic quotes Alle 3 Varianten stehen auf OFF
 
Zuletzt bearbeitet:
Der Code von saftmeister erzeugt bei mir das gewünschte Ergebnis.

PHP:
<?php
	$var = '"Meine Name ist Karl" Nicht erlaubt:_!?';
	
	print($var);
	print("\n");
	print(preg_replace('![^a-zA-Z-öäü ßÖÄÜ´"]!is', '', $var));
	print("\n");
?>

Ausgabe

"Meine Name ist Karl" Nicht erlaubt:_!?
"Meine Name ist Karl" Nicht erlaubt
 
Ich hab den code jetzt per copy and paste übernommen nur den variabel namen angepasst:

Parse error: syntax error, unexpected ')' in /..... () genau in der Zeile in dem der preg_replace steht.

Was hat es mit dem ("\n) aufsich? Liegts vllt da drann... das hab ich nämlich nicht so wie du.



Edit: Den Fehler in der syntax hab ich beseitigt. Der ) war noch vom print() befehl

Kommt aber wieder \" bla text bla \" raus
 
Zuletzt bearbeitet:
Das \n ist ein Zeilenumbruch und dient nur dazu, dass die beiden Bildschirmausgaben untereinander im Quelltext angezeigt werden.
 
Zurück