String überprüfen (preg_match)
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angeben
buchstabe
code
erfolg
expression
funktion
gedanke
helfen
kleinen fehler
kleines problem
re
sol
string
tester
umlaut
url
versuchen
weiteren sonderzeichen
zahl
ziffer
-
Hallo zusammen,
ich habe ein ref="/tag/kleines problem">kleines Problem und komme gerade nicht wirklich weiter. Und zwar möchte ich überprüfen ob eine eingebender String sowohl einen Buchstaben als auch eine Ziffer enthält. Ich versuche das ganze mit der Funktion preg_match. Allerdings komme ich nicht ganz zum gewünschten Erfolg, da ich nicht weiß wie ich angeben kann das beides vorhanden sein muss.
preg_match('#[A-Za-z0-9]#', "Hier der String der überprüft werden soll")
Allerdings reicht es ja so aus, dass entweder A-Z oder a-z oder 0-9 vorhanden ist.
Ich bräuchte also irgendwie eine kleine Denkhilfe wie ich preg_match erklären kann dass sowohl A-Za-z als auch 0-9 vorhanden sein muss. Ich hoffe mir kann jmd helfen :)
mfg
Buechsi
Beitrag zuletzt geändert: 22.2.2010 16:58:55 von buechsdeluxe -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Probier einfach mal:
if (preg_match('#[A-Za-z]#', "Hier der String der überprüft werden soll") && preg_match('#[0-9]#', "Hier der String der überprüft werden soll")) { //und so weiter...
LG cookies -
die regulären ausdrücke dazu wären /[A-Za-z]+/ und /[0-9]+/
Beitrag zuletzt geändert: 22.2.2010 17:17:16 von fchriis -
Da Du ja eigentlich zwei Bedingungen abprüfen möchtest, musst Du auch zweimal testen:
$stri="Hier der String der überprüft werden soll"; $res=preg_match('#[A-Za-z]#',$stri) && preg_match('#[0-9]#',$stri);
So sollte es gehen - getestet habe ich es aber nicht ...
Beitrag zuletzt geändert: 22.2.2010 17:18:09 von cars-ten -
Komisch so hatte ich es vorhin schon versucht, weil das auch mein erster Gedanke war, aber da hab ich wohl einen kleinen Fehler drin gehabt denn es ging nicht. Aber jetzt funktioniert alles bestens.
Viele Dank. -
buechsdeluxe schrieb:
Hallo zusammen,
ich habe ein kleines Problem und komme gerade nicht wirklich weiter. Und zwar möchte ich überprüfen ob eine eingebender String sowohl einen Buchstaben als auch eine Ziffer enthält. Ich versuche das ganze mit der Funktion preg_match. Allerdings komme ich nicht ganz zum gewünschten Erfolg, da ich nicht weiß wie ich angeben kann das beides vorhanden sein muss.
preg_match('#[A-Za-z0-9]#', "Hier der String der überprüft werden soll")
Allerdings reicht es ja so aus, dass entweder A-Z oder a-z oder 0-9 vorhanden ist.
Ich bräuchte also irgendwie eine kleine Denkhilfe wie ich preg_match erklären kann dass sowohl A-Za-z als auch 0-9 vorhanden sein muss. Ich hoffe mir kann jmd helfen :)
mfg
Buechsi
Es reicht auch 1 regular expression
([A-Za-z]+[0-9]+)|([0-9]+[A-Za-z]+)
Prüft ob ein (oder mehr) Buchstabe gefolgt von einer Zahl (oder mehr)
ODER
eine (oder mehr) Zahl gefolgt von einem (oder mehreren) Buchstaben
vorhanden ist..
Beispiel
Beitrag zuletzt geändert: 22.2.2010 17:34:37 von simuliertes -
Nein simuliertes, dein PCRE deckt viele Fälle nicht. Darunter:
"hal1o"
Optimal wäre zuerst eine Prüfung auf #^[a-zA-Z0-9]$#, dann eine auf #[a-zA-Z]# und dann eine auf #[0-9]#. Warum? Dann muss der String sowohl Zahl als auch Buchstabe enthalten, kann aber keine weiteren Sonderzeichen enthalten. Ich weiß aber nicht, ob du das überhaupt willst. -
ich denke es sollte auch das gehten...
/([\w0-9]+)/
dabei ist aber zu beachten das natürlich nur in einer zeile geschaut wird... musst noch die modifier setzten...
und wenn du keine umlaute haben willst musst du \w zu a-zA-Z machen
mfg André
//edit: nikic war schneller
Beitrag zuletzt geändert: 22.2.2010 17:38:23 von andre-morillon -
nikic schrieb:
Nein simuliertes, dein PCRE deckt viele Fälle nicht. Darunter:
"hal1o"
Optimal wäre zuerst eine Prüfung auf #^[a-zA-Z0-9]$#, dann eine auf #[a-zA-Z]# und dann eine auf #[0-9]#. Warum? Dann muss der String sowohl Zahl als auch Buchstabe enthalten, kann aber keine weiteren Sonderzeichen enthalten. Ich weiß aber nicht, ob du das überhaupt willst.
Öhm klar deckt es "hal1o" ab.
3( oder auch 2 ) Abfragen sind nun mal langsamer als eine, deswegen wäre es doch optimal das in einer Abfrage abzudecken oder?
andre-morillon Dein Code guckt ob Buchstaben oder Zahlen vorhanden sind (sol aber und sein) -
simuliertes schrieb:
Öhm klar deckt es "hal1o" ab.
Nein. "hal1o" würde dein PCRE nicht matchen. Nur "hal10" oder "8123ooo", nicht aber "hal1o" -
nikic schrieb:
simuliertes schrieb:
Öhm klar deckt es "hal1o" ab.
Nein. "hal1o" würde dein PCRE nicht matchen. Nur "hal10" oder "8123ooo", nicht aber "hal1o"
nikic die frage worum es hier ging war ob ein string Zahlen und Buchstaben enthält.
nicht ob er einen Satz mit Zahlen und Buchstaben Matcht!
Und bei "hal1o" wäre selbstverständlich das Ergebniss : "hal1"
Beitrag zuletzt geändert: 22.2.2010 19:45:09 von simuliertes -
óÒ Da war ich wohl (ausnahmsweise :D) im unrecht. Das ist wirklich ne elegante Lösung, so einfach konnt ich gar nicht denken.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage