Suche Hilfe zu : preg_replace
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
auftauchen
ausdruck
buchstabe
code
dank
eingabe
entfernen
erlauben
fehlermeldung
formular
glauben
klappen
problem
runden klammern
sonderzeichen
stelle
string
url
vergleich
werfen
-
Hi,
Ich bin im moment am basteln eines Anmeldeformulars und habe auch alles wunderbar hinbekomen.
Nun möchte ich aber bestimmte Zeichen verbieten.
Kann mir vielleicht irgend jemand einen geeignettes preg_replace Suchmuster erstellen?
Oder vielleicht weiß jemand eine Seite an der ich das lernen kann,
ich komme nämlich nicht wirklich dahinter.
Das Suchmuster soll nur a-z,A-Z,1-9 erlauben.
Falls irgendjemand findet das der Thread unangebracht ist oder im falschen Unterforum der soll die "Back"-Taste drücken oder den Kopf auf den Tisch hauen.
Falls die Person kein einfaches Uservolk ist so bitte ich ihn den Thrad richtig einzuordnen.
mfg matthimeo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ist das noch aktuell?
preg_match nimmst du zur Erkennung:
if(!preg_match( '/^([a-zA-Z0-9]/)' , $vergleich)) { // was passiert wenn nicht erfüllt }
aber das hilft dir glaube ich nciht weiter.
Ich würde mich an deiner stelle eher mit JavaScript behelfen. damit kannst du unterbinden, dass diese Sonderzeichen bei der Eingabe überhaupt erst auftauchen^^ ->natürlich sollte man dann die prüfung dennoch vornehmen, weil viele Leute JavaScript einfach so deaktivieren...
Ansonsten hängt die Lösung für dein Problem davon ab, wie du das problem lösen willst. Willst du blos eine Fehlermeldung werfen und die Eingabe ignorieren und den User unverrichteterdinge ins Formular zurückwerfen, dann genügt das oberste Codeschnipsel
natürlich könnte man auch die Sonderzeichen einfach so entfernen, ohne den user groß zu benachrichtigen... -
hi,
danke für die hilfe
sebulon schrieb: Ist das noch aktuell?
preg_match nimmst du zur Erkennung:
if(!preg_match( '/^([a-zA-Z0-9]/)' , $vergleich)) { // was passiert wenn nicht erfüllt }
aber das hilft dir glaube ich nciht weiter.
Ich würde mich an deiner stelle eher mit JavaScript behelfen. damit kannst du unterbinden, dass diese Sonderzeichen bei der Eingabe überhaupt erst auftauchen^^ ->natürlich sollte man dann die prüfung dennoch vornehmen, weil viele Leute JavaScript einfach so deaktivieren...
Ansonsten hängt die Lösung für dein Problem davon ab, wie du das problem lösen willst. Willst du blos eine Fehlermeldung werfen und die Eingabe ignorieren und den User unverrichteterdinge ins Formular zurückwerfen, dann genügt das oberste Codeschnipsel
natürlich könnte man auch die Sonderzeichen einfach so entfernen, ohne den user groß zu benachrichtigen...
Doch , ich habe vor dem User eine einfache Fehlermeldung an dem Kopf zu werfen.
Für mehr reicht es erstma nicht.
Danke
mfg matthimeo
EDIT:
Bist du sicher das der Befehl so funktioniert?
Bei mir gibt der dazu einen Fehler aus.
Beitrag zuletzt geändert: 12.1.2010 17:31:17 von matthimeo -
hm, nimm die Runden klammern um den Ausdruck raus, dann müsste es klappen
sag am besten mal die Fehlermeldung, wenn da was mit regex steht, dann ist das der Fehler... asche auf mein Haupt... -
sebulon schrieb: hm, nimm die Runden klammern um den Ausdruck raus, dann müsste es klappen
So?:
if(!preg_match( '/^[a-zA-Z0-9]/' , $vergleich)) { // was passiert wenn nicht erfüllt }
Ansonsten:
Ich habe mittlerweile eine Funktion geschrieben die das Wort in einzelne Buchstaben aufteilt und jeden Buchstaben dann kontrolliert.
(Also alle zeichen einzeln nachgucken)
Aber:
Aber das kann finde ich nicht die Lösung sein.
Ich werde das neue von dir mal probieren,
sobald du mir die Bestätigung gegeben hast das du das so meinst
(habe schon häufiger ein richtiges Script "kaputtet" und überspeichert :( )
mfg matthimeo
Beitrag zuletzt geändert: 13.1.2010 16:48:17 von matthimeo -
So, sollte es gehen. Vorherige Variante würde mir erlauben alles was ich will rein zu schreiben, ab dem zweiten Buchstaben.
if(!preg_match( '/^[a-zA-Z0-9]+$/' , $vergleich)) { // was passiert wenn nicht erfüllt }
Übrigens, du kannst mit PHP direkt auf die Buchstaben in einem String zugreifen per $str[0] (erster Buchstabe). Dann musst du nichtmal ein string_split machen :) -
ok danke.
aber was heißt das $ bzw. was bringt das?
if(!preg_match( '/^[a-zA-Z0-9]+$/' , $vergleich)) { // was passiert wenn nicht erfüllt }
aber nochmal danke
mfg matthimeo
Beitrag zuletzt geändert: 13.1.2010 22:02:10 von matthimeo -
$ ist das String-Ende.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage