php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.04.2005, 21:42  
Gast
 
Beiträge: n/a
Standard reguläre Ausdrücke

Mein Problem ist das ich ein Formularfeld habe das den Inhalt "Name, Vorname" enthalten soll.
Es muß exakt so sein, daß nach dem Name ein Komma und ein Leerzeichen kommen muß. Außerdem müssen die ersten Buchstaben groß geschrieben sein. "ÄÖÜäöüß-. " müssen akzeptiert werden, damit auch Doppelnamen und Titel wie "Dr." angenommen werden.
Kann mir bitte jemand helfen und mir sagen wie die "ereg"-Zeile aussehen muß?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.04.2005, 22:14  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

sowas gehört unter Gesuche und nicht ins Anfängerforum.

wenn du selbst was lernen willst:
http://tut.php-q.net/regex.html

ansosnten warte bis den thread ein mod verschiebt.

mfg
robo47
robo47 ist offline  
Alt 10.04.2005, 22:19  
Gast
 
Beiträge: n/a
Standard

also wie willste die user dazu zwingen diese regeln einzuhalten (komma, groß- kleinschreibung ...) ?
ich sehe da große unannehmlichkeiten für die user. zumal es auch klar in der anweisung eines formulares stehen sollte und ich hab ehrlich gesagt noch nie eine so ausführliche anleitung gesehen...

zu deinen problemem, mach doch was die titel betrifft, ein auswahlmenü, vor- und zuname getrennte formularfelder... so kannst du dir zur not den passenden string (wenn du ihn denn unbedingt mit komma... brauchst) selbst zusammen bauen.
was die groß und kleinschreibung der namen betrifft, kannst du das sicher bestimmen im formular, indem du die eingegebenen daten zerlegst und zum beispiel überprüfst, ob der erste buchstabe GROß geschrieben ist. bedenke aber, dass nicht jeder name einen großen buchstaben am anfang haben muss, ich denke da besonders an ausländische namen....
 
Alt 11.04.2005, 00:31  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

jupp. das fällt unter völliges over-validating. kommt eigentlich immer beim validieren von telefonnummern, trifft hier aber auch zu.

1. jeder benutzer, der diese regel absichtlich 'umgehen' will (z.b. hat kein telefon, oder will seine handynummer einfach nicht angeben), schafft es, dummy-daten einzutragen, egal wie scharf du die regeln setzt.
2. je schwieriger es wird, ein formular zu benutzen, desto seltener wird es benutzt, was in den allerallerwenigsten fällen im sinne des autors war.
3. es geht viel schneller, einen eventuell vorkommenden 'ungewünschten' eintrag manuell zu löschen oder zu ignorieren, als eine regel zu entwerfen, die alle gängigen 'gültigen' einträge validiert. du landest irgendwann bei statistik und heuristik.
4. für 99% der fälle reicht es aus, simple algorithmen zu verwenden, wie 'feld ist leer' - das ist meist auf 'in der eile vergessen, was einzutragen' zurückzuführen.

/my 57 cents dazu.

falls du immer noch validieren willst:
eine simple methode, etwas über reguläre ausdrücke zu lernen und nicht zu verzweifeln:

PHP-Code:
<?php
function test_nameIsValid() {
  
$valuesToPass = array(
   
'Franz, Mayer''Fritz, Hallo''Önar Elefant''Dr. Mario'
  );
  
$valuesToFail = array(
   
'''dong''arsch','000','-' 
  
);
  
$failed false;
  foreach(
$valuesToPass as $v) {
         if(
nameIsValid($v) !== true) {
           echo 
' ' $v ' wurde fälschlicherweise als fehlerhaft markiert.
'
;
          
$failed true;
        }
  }
  foreach(
$valuesToFail as $v) {
        if(
nameIsValid($v) !== false) {
         echo 
' ' $v ' wurde fälschlicherweise als ok markiert.
'
;
      }
   }
    echo (
$failed) ? ' test fehlerhaft ' 'test ok';
   echo 
'
'
;
   return (!
$failed);
 }

function 
nameIsValid($name) {
  return 
false// hier den regulären ausdruck einfügen.
}

test_nameIsValid();
?>
... und jetzt so lange nameIsValid() abändern, bzw. den regulären ausdruck darin, bis du nur noch 'test ok' zu sehen bekommst.
ist meiner meinung nach die schnellste und robusteste methode, ein komplexes problem wie reguläre ausdrücke in den griff zu bekommen, ohne wahnsinnig zu werden und nach jeder änderung wieder ein formular anwerfen zu müssen, möglicherweise mit mehreren feldern, die auch noch immer wieder eingetragen sein müssen, damit die spezielle methode überhaupt angeschmissen wird.
axo ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
reguläre ausdrücke php name vorname, regulärer ausdruck doppelname#, reguläre ausdrücke doppelnamen, doppelnamen \leer\, eregi doppelnamen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.