reguläre ausdrücke - Zeilenumbruch und Text

gct

Grünschnabel
So Hallo erstmal,

hab mich heut erst angemeldet und hoffe ihr könnt mir bei einem vielleicht sehr kleinem Problem weiter helfen. Ich verzweifel gerade an einem regulären Ausdruck für ne Textbox, ich will das der übertragene Text keine Codeschnippsel enhalten darf daher will ich einfach gewisse Sonderzeichen verbieten und nur den Zeilenumbruch erlauben

Der Zeilenumbruch wird vorher immer in ein <br /> umgewandelt und ich benutze kein strip_tags weil das fehleranfällig ist
Sonderzeichen die erlaubt werden sind "?!.,-äöü" ansonsten nur Buchstaben und Zahlen
Code:
preg_match("=^[a-z0-9äüöß?!-., ]+$=i",$text)
mein Problem liegt jetzt darin wie kann ich das <br /> erlauben und zwar nur so geschrieben ohne die einzelnen Zeichen < / > frei zu geben ?

Ich habs jetzt schon in so vielen Kombinationen probiert und schaffs einfach nich ALSO BITTE HILFEEEEEEE ;-)
 
Und wie erlaube ich dann \r und \n ?

Nach meinem Wissen müsste ich doch nur das \ erlauben und sowas schreiben oder ?
Code:
preg_match("=^[a-z0-9äöüß\?\!\%\-\.\,\\\ ]+$=i",$text)
und das klappt bei mir aber nich

Ich hab ne Textbox für ein Kontakt Formular und wenn die Bedingung oben erkennt das falsche Zeichen im String sind wird ein Fehler ausgegeben Das Problem is das die zwei Zeilenumbrüche ja nicht direkt übertragen werden also kann ich sie auchnicht erlauben oder verbieten aber ich kann sie vorher umwandeln in ein <br /> und dann wieder im String speichern und diesem dann überprüfen Also wenn ich den übertragenen String vorher ausgebe wird mir kein Zeilenumbruch ausgegeben obwohl er ja eigentlich vorhanden ist warum das so is weiss ich nich aber im Quelltext is er sichtbar Warum ? Wieso ? Weshalb ?

Gruß gct
 
Hallo,

gct hat gesagt.:
Und wie erlaube ich dann \r und \n ?
Indem du eben diese Folgen in die Zeichenklasse aufnimmst:
PHP:
preg_match("=^[a-z0-9äöüAÖÜß?!%\-.,\r\n ]+$=i",$text)

Das Problem is das die zwei Zeilenumbrüche ja nicht direkt übertragen werden also kann ich sie auchnicht erlauben oder verbieten aber ich kann sie vorher umwandeln in ein <br /> und dann wieder im String speichern und diesem dann überprüfen
Wenn sie nicht direkt übertragen werden, wie denn dann?

Also wenn ich den übertragenen String vorher ausgebe wird mir kein Zeilenumbruch ausgegeben obwohl er ja eigentlich vorhanden ist warum das so is weiss ich nich aber im Quelltext is er sichtbar Warum ? Wieso ? Weshalb ?
Ein Zeilenumbruch in einer HTML-Datei wird in der Regel im Browser nicht als solcher angezeigt (gibt auch Ausnahmen). Das währe auch höchst kontraproduktiv, wenn man wartbare HTML-Dateien erzeugen will.

Grüße,
Matthias

PS: Komma- und Punkttaste kaputt?
 
Ja danke jetzt klappts endlich :-)
Das mit den Zeilenumbrüchen meinte ich eigentlich etwas anderst aber das hätte ich dazu schreiben sollen

Also viellen Dank nochmal super Forum hier
 
Zurück