Reguläre Ausdrücke: Nur Buchstaben Zahlen und Zeichen
Karl Heinz K.
- php
0 Gunnar Bittersmann0 EKKi0 MudGuard0 peter
Hallo Forum,
ich habe nun bereits eine Stunde gesucht und rumgebastelt aber ich bekomme folgendes nicht hin:
Ich möchte Sätze daraufhin kontrollieren, ob nur Buchstaben a-z, A-Z, Zahlen 0-9 und einige vereinzelnte Zeichen wie .,?! in dem Satz vorkommen.
Ich bin so weit:
if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }
Also für $sentence = "Hallo, wie geht es dir?"; soll die Bedingung wahr sein und für $sentence = "Tom & Jerry gingen in den Wald!"; soll die Bedingung nicht wahr sein.
Ich würde mich sehr freuen, wenn mir jemand bei diesem undurchsichtigen Problem hilft...
a-zA-Z0-9,.!? ↩︎
@@Karl Heinz K.:
nuqneH
Ich möchte Sätze daraufhin kontrollieren, ob nur Buchstaben a-z, A-Z, Zahlen 0-9 und einige vereinzelnte Zeichen wie .,?! in dem Satz vorkommen.
Keine Umlaute, kein ß, kein à, kein é? Ich halte die Beschränkung auf a-z, A-Z für reichlich du^Wungeeignet.
if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }
Also für $sentence = "Hallo, wie geht es dir?"; soll die Bedingung wahr sein und für $sentence = "Tom & Jerry gingen in den Wald!"; soll die Bedingung nicht wahr sein.
Und warum negierst du dann die Zeichenklasse?
Qapla'
a-zA-Z0-9,.!? ↩︎
Das einfache oben sollte erstmal als Beispiel dienen um es nicht unnötig komplizierter zu machen.
Hab den Dreh nun raus, vielen Dank!
Von wegen...
Bei meinem kurzen Beispiel hat's geklappt. Bei anderen nicht. Zum Beipsiel hier hat es nicht geklappt:
"Sounds wonderful! (will google it). We took the kids to themepark etc last week and it was fab! Enjoy it! (& get some pics?!) Xx"
Der Ausdruck wurde wahr...
@@EKKi:
nuqneH
Und warum negierst du dann die Zeichenklasse?
Sehfehler.
Merke: ^[ != [^
Qapla'
Mahlzeit Gunnar Bittersmann,
Sehfehler.
Hier hast Du 'ne Brille: 8
Merke: ^[ != [^
Obwohl ... das bringt Dir ja eh nichts - so ohne Augen ... ;-]
MfG,
EKKi
Mahlzeit Karl Heinz K.,
Ich bin so weit:
if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }
preg_match() liefert die *Anzahl* der evtl. vorhandenen Muster. FALSE wird nur zurückgegeben, wenn ein Fehler aufgetreten ist.
MfG,
EKKi
a-zA-Z0-9,.!? ↩︎
Hi,
Ich möchte Sätze
Sätze enthalten im Normalfall Leerzeichen zwischen den Worten.
if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }
In Deiner Zeichenklasse sind keine Leerzeichen.
Normale Sätze (also solche, die aus mehr als einem Wort bestehen), kommen also nicht durch.
cu,
Andreas
a-zA-Z0-9,.!? ↩︎
Hi,
Ich möchte Sätze daraufhin kontrollieren, ob nur Buchstaben a-z, A-Z, Zahlen 0-9 und einige vereinzelnte Zeichen wie .,?! in dem Satz vorkommen.
Ich bin so weit:
if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }
Also wenn ich das mit den Metazeichen richtig verstehe, dann trifft der Punkt z.B. für alle Zeichen zu, wenn er nicht mit einem Backslash maskiert wird. Zumindest das Fragezeichen dürfte auch noch problematisch sein.
gruß
peter
a-zA-Z0-9,.!? ↩︎
Hi,
if( preg_match("/[1]+$/", $sentence) ) { // MACHE WAS }
Also wenn ich das mit den Metazeichen richtig verstehe, dann trifft der Punkt z.B. für alle Zeichen zu, wenn er nicht mit einem Backslash maskiert wird. Zumindest das Fragezeichen dürfte auch noch problematisch sein.
Nö. Du mußt auch den Abschnitt über Zeichenklassen lesen (insbesondere das, was dort über Metazeichen steht).
cu,
Andreas
a-zA-Z0-9,.!? ↩︎
Hi MudGuard,
vielen Dank für den Hinweis.
Nö. Du mußt auch den Abschnitt über Zeichenklassen lesen (insbesondere das, was dort über Metazeichen steht).
Da könnte ja auch mal ein Hinweis im Abschnitt über die Metazeichen stehen.
Versuche gerade, die ganze Sache mal so einigermaßen zu verstehen und war schon ein paar Mal am Rande des Wahnsinns gelandet.
Is dann schon ziemlich mühsam, wenn man manche Sachen so einigermaßen kapiert hat und dann bei jedem "Neuen" alles andere nochmal durchstöbern muß, ob da zum Aktuellen nicht noch was anderes stand.
gruß
peter