preg_match() Probleme

bomberpilotmp3

Erfahrenes Mitglied
Hallo Jungs,

ich habe ein kleines problem. Ich taste mich gerade mit preg_match() und den Regulären Ausdrücken ran. Nun sind 2 Probleme.

1.
PHP:
<?
if (!preg_match('/^[a-zA-Z0-9äüö-_.:,;]{10,500}+$/i', $_POST['comment'])) {
// Blubb
}
?>

Wie der Code schon sagt (oder auch nicht) möchte ich prüfen, ob das Kommentar nur aus Zahlen und Buchstaben sowie Komma, äüö, Punkten und nur aus Strichen besteht. Nun er nimmt es nicht an.

2. Er nimmt auch nur zb. HalloMichael, wenn ich aber Hallo Michael nehme, geht es auch nicht.

Ein weiteres Problem Nr.2 ist, das sobald ich eine Textbox habe, kommt der Fehler: Wenn ich zb. ein Break reinhaue, das er die Prüfung abbricht.

Kann mir jemand helfen?
 
Wie der Code schon sagt (oder auch nicht) möchte ich prüfen, ob das Kommentar nur aus Zahlen und Buchstaben sowie Komma, äüö, Punkten und nur aus Strichen besteht.
Hier wärest du mit [phpf]strlen[/phpf] und [phpf]ctype_print[/phpf] besser bedient. Das ist nicht nur schneller sondern erspart dir den selbstgeschriebenen regulären Ausdruck, der sich nur auf Sonderzeichen wie ä, ö und ü zur Zeit beschränkt.

Dennoch hier eine kurze Erläuterung:
Code:
/^[a-zA-Z0-9äüö-_.:,;]{10,500}+$/i
Es fehlt eine Angabe für Leerzeichen (durch \040, also ASCII #32 repräsentiert) und auch Zeilenumbrüche (\012 oder \n, also Steuerzeichen #10).
In deiner Character Class befindet sich des Weiteren ein Preg-Schlüsselegriff, der Punkt. Um ihn als solchen verwenden zu können, muss er escaped werden: \..
Zu guter letzt ist das + fehl am Platz. Man kann es zwar an dieser Stelle verwenden, jedoch ist das sicherlich nicht das, was du möchtest.
Code:
/^[\012\040\.:,;-_0-9A-Za-zäüö]{10,500}+$/i

Habe es jetzt nicht ausprobiert, sollte aber funktionieren.

Ein weiteres Problem Nr.2 ist, das sobald ich eine Textbox habe, kommt der Fehler: Wenn ich zb. ein Break reinhaue, das er die Prüfung abbricht.
Sorry, aber irgendwie ist mir schleierhaft, was du damit erfragen möchtest. Ein paar Zeilen Code, falls erforderlich, sind immer von Hilfe um ein Problem nachvollziehen oder sogar reproduzieren zu können.
 
Es funktionieren leider beide Funktionen: ctype_print() und preg_match() nicht so, wie ich es möchte.

Der Hintergrund: Ich habe ein Kommentarscript bei mir eingebaut, nun möchte ich einfach gewisse Zeichen ablehnen.
 
Zurück