Mit PHP string auf bestimmte zeichen überprüfen
horst
- php
0 suit0 Felix Riesterer
Ich wollte mit PHP einen string überprüfen lassen, also ob er gewisse zeichen enthält.
Dabei sollte es so sein das wenn er die zeichen 0123456789-+*%/. enthält der code weitermacht und wenn etwas anderes vorkommt eine Fehlermeldung erscheint.
Jetzt bin ich zwar auf eine funktion namens preg_match() gestoßen, allerdings ist mir die syntax für das suchmuster etwas verwirrend. Wäre nett wenn ihr mir mal erklären könntet, wie ich das suchmuster bzw die Fkt. schreiben muss um oben genannte Zeichen zu filtern.
Jetzt bin ich zwar auf eine funktion namens preg_match() gestoßen, allerdings ist mir die syntax für das suchmuster etwas verwirrend. Wäre nett wenn ihr mir mal erklären könntet, wie ich das suchmuster bzw die Fkt. schreiben muss um oben genannte Zeichen zu filtern.
reguläre ausdrücke sind eine feine sache, allerdings sollte man tunlichst die finger davon lassen, wenn man nichtmal weiß, wie man ein problem ohne sie löst
du könntest zb in einer größen case-verzweigung jedes zeilen auf sein vorhandensein mittels strstr() prüfen
du könntest auch deine zeichenkette in ein array umwandeln (jedes zeichen in ein element eines arrays und mittels in_array auf deine wunschzeichen in einer schleife durchrattern/prüfen)
für jedes problem sollte ein findiger programmierer mal 5 lösungen bereit haben, von denen kannst du dann wählen - auch wenn man 100%ig weiss, dass die lösungen (zb die beiden von mir genannten) nicht effizent sind, sind sie ein wichtiges element beim kreativen prozess und der lösungsfindung
wenn du gleich von vorne weg sagst "reguläre ausdrücke müssens sein" hast du schon verloren - wenngleich ich nicht bestreite, dass das in diesem fall eine kurze und effiziente möglichkeit ist, dein problem zu lösen
ich denke aber, dass du nicht so weit bist, sie schon einzusetzen, da du dein problem nicht ohne sie lösen kannst - und jedes problem lässt sich ohne reguläre ausdrücke lösen (manchmal mit weniger aufwand, machmal mit ungleich viel mehr aufwand)
ich denke aber, dass du nicht so weit bist, sie schon einzusetzen, da du dein problem nicht ohne sie lösen kannst - und jedes problem lässt sich ohne reguläre ausdrücke lösen (manchmal mit weniger aufwand, machmal mit ungleich viel mehr aufwand)
Ich habe nicht behauptet ich könnte es nicht anders lösen, nur ich habe begrenzte kapazitäten, also war für mich ein regex die einzige sinvolle lösung..
Ich habe nicht behauptet ich könnte es nicht anders lösen, nur ich habe begrenzte kapazitäten, also war für mich ein regex die einzige sinvolle lösung..
du hast aber auch nichts gegenteiliges behauptet ;)
Tipps für Fragende
"Schildere, was Du bisher zur Lösung des Problems unternommen hast. Es wird Dir ja wenig helfen, wenn Du Tipps bekommst, die Du bereits selbst ausprobiert hast..."
Lieber horst,
Dabei sollte es so sein das wenn er die zeichen 0123456789-+*%/. enthält der code weitermacht und wenn etwas anderes vorkommt eine Fehlermeldung erscheint.
also ich probiere es einmal:
$testString = "abc12345";
if (preg_match('~(?s)[^0-9\[\]()\-+*%/.]~', $testString)) {
echo "Fehlermeldung";
}
Obiger Code (ungetestet!) sollte auf das Vorhandensein mindestens eines Zeichens, das nicht in der Sammlung enthalten ist, prüfen, um bei einem positiven Fund die Fehlermeldung auszugeben.
Es lohnt sich aber extremst, die Syntax regulärer Ausdrücke zu erlernen. Ich wüsste wirklich nicht, was ich ohne dieses mächtige Werkzeug täte...
Liebe Grüße,
Felix Riesterer.