Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Preg Match Fehler [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Preg Match Fehler


 
chrisphp
08-04-2005, 15:43 
 
Hallo,

ich habe folgenden Code um bei der Eingabe des Namens zu prüfen:

if(!preg_match("/^[a-zA-Z0-9]{1}[a-zA-Z_.-0-9]{3,18}[a-z0-9]{1}$/", $benutzername)) {...


Jetzt stellt sich mir die Frage wieso ich bei Eingabe des Namens "christoph20" ein False erhalte. Bei "christoph2" gehts allerdings...

Danke für die Hilfe,

Christoph

 
TobiaZ
08-04-2005, 15:46 
 
weil deine quantifierer nicht zu dem string passen!

 
chrisphp
08-04-2005, 15:52 
 
Nun, ich will das der Name die folgende Form hat:

[a-zA-Z0-9] am anfang und ende.
Es soll jedoch ein -, ein . und ein _ erlaubt sein. Allerdings nicht am Anfang des Namens und ganz am Ende auch nicht.

Hat jemand eine Lösung für mich? [merke: Iám still learning]

 
TobiaZ
08-04-2005, 16:34 
 
kannst dich ja mal im manual und in unserem Tutorial zum Thema schlau machen. Ist so schwer nicht. Aber die fertige Lösung werde ich dir mit sicherheit nicht hinknallen. Vorallem, weil du nicht ansatzweise auf meinen Hinweis eingegangen bist, sondern gleich deine Forderung gestellt hast!

 
chrisphp
08-04-2005, 16:49 
 
Tut mir leid, sollte nicht als forderung rüberkommen.

hab mir vorhin schon auf php.net das handbuch durchgelesen. allerdings werde ich da nicht ganz schlau draus. ein paar sagen hab ich mit preg_match schon geschafft, allerdings verstehe nicht wie ich vorgehen muss um meine wünsche zu verwirklichen.

auch das handbuch auf php-resource hilft mir da nicht weiter. könnte mir bitte jemand behilflich sein und das "erklären"?

 
TobiaZ
08-04-2005, 16:55 
 
auch das handbuch auf php-resource hilft mir da nicht weiter Falls es dir nicht aufgefall ist. dabei handelt es sich um das php.net-manual... :D

Du sollst ja auch in die Tutorials gucken!

 
chrisphp
08-04-2005, 16:57 
 
btw. ist mir aufgefallen.

 
TobiaZ
08-04-2005, 16:58 
 
Und haste jetzt in den Tuts nachgeguckt?

 
chrisphp
08-04-2005, 17:07 
 
Ja hab ich.
Natürlich sind etliche Code-Schnipsel vorhanden. Nur was hilft mir das wenn ich das System nich durchblicke mit dem preg_match arbeitet?

 
chrisphp
08-04-2005, 17:12 
 
so, ein wenig was konnte ich jetzt schon selbst rausfinden

^ steht für 'anfang'
[0-9] sind alle zahlen
+ sind beliebig viele wiederholungen
$ steht für 'ende'

 
chrisphp
08-04-2005, 17:22 
 
nun, ein kleines stück weiter bin ich schon, trotzdem - trotz 2 stunden google werd ich noch immer nicht schlau.

mal schaun, vielleicht kanns mir ja jemand erklären wie ich in dem fall vorgehen muss. ich schnall einfach die logik dahinter nicht.

if(!preg_match("/^[a-zA-Z0-9]+[-]+[a-zA-Z0-9]{5,20}$/", $benutzername)) {

 
chrisphp
08-04-2005, 17:27 
 
So, jetzt funktioniert das ganze einigermaßen. Jetzt aber die Frage: Wenn ich schreibe

if(!preg_match("/^[a-zA-Z0-9]+[-]+[a-zA-Z0-9]{5,20}$/", $benutzername)) {

Dann gibt er mir bei chris-www zum beispiel einen fehler aus. Grund: Weil nach dem "-" ja mindestens 5 Zeichen sein müssen ({5,20}). D.h. also das ich die Angabe der Zeichen weggeben muss. Wie kann ich dann trotzdem überprüfen das gesamt zwischen 5 und 20 Zeichen angegeben sind?

Edit: Das Format des eingegebenen Namens sollte so aussehen: abc-ksfdf

sprich, 1. zeichen muss buchstabe oder nummer sein, letztes zeichen ebenfalls. dazwischen darf (aber muss nicht) ein zeichen wie "-", "." und "_" sein.

weiters darf die gesamte eingabe nicht länger als 20 zeichen, jedoch mindestens 5 zeichen sein

Ich habs jetzt wirklich stundenlang versucht und ich bin kurz vorm platzen weil es einfach nicht funktionieren will

 
derHund
08-04-2005, 20:10 
 
weiters darf die gesamte eingabe nicht länger als 20 zeichen, jedoch mindestens 5 zeichen sein
schicker sportwagen


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:40 Uhr.