Gross-/Kleinschreibung unter Berücksichtigung von Trennzeichen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gross-/Kleinschreibung unter Berücksichtigung von Trennzeichen

    Hallo Freunde,

    ich habe ein Problem und zwar möchte ich bei Formulardaten wie Vorname, Nachname usw. die Gross-/Kleinschreibung korrigieren.
    Jedoch komme ich nicht weiter.

    Wenn z.B. der Vorname Trennzeichen enthält wie "+", "-", " " (Leerzeichen), oder auch andere Trennzeichen, möchte ich dass das Wort hinter dem Trennzeichen mit einem großen Buchstaben geginnt.

    Beispiel:
    Heinz-georg -> Heinz-Georg
    Heinz georg -> Heinz Georg

    Dazu habe ich eine Klasse erzeugt, bei dem im Konstruktor die Formulardaten korrigiert werden sollen. (Entwurf)

    PHP-Code:
    <?php

    class FormCorrect {

      var 
    $email;
      var 
    $titel;
      var 
    $fname;
        
      function 
    FormCorrect($email$anrede$vorname) {
        
        
    $this->email strtolower(trim($email));
        
    $this->titel $anrede;
        
    $vorname     trim($vorname);
            
        if(!
    preg_match("/^[a-zäöüß]+$/i"$vorname)) { // Prüft ob in $vorname nur Buchstaben enthalten sind 

          
    $sonderz      "+- ";
          
    $new_vorname  strtok($vorname$sonderz);            // Zerlegt $vorname anhand von $sonderz
          
    $vorname      "";
                    
          while(
    $new_vorname) {
            
    $vorname     .= ucfirst(strtolower($new_vorname)) . " "// Erzeugt $vorname neu 
            
    $new_vorname  strtok($sonderz);
          }
          
    $this->fname $vorname;    
        }
        else {                                                            
          
    $vorname      strtolower($vorname);
          
    $vorname      ucfirst($vorname);
          
    $this->fname  $vorname;
        }
      } 

      function 
    Show() {
            
        foreach(
    $this as $wert) {
            
          echo 
    $wert "<br>";            
        }
      }
    }
    ?>

    <? 
       $form = new FormCorrect("HeINZ_geoRG@xxx.de", "Herr", "HeiNZ-geOrg"); 
       $form->Show();
    ?>
    Ausgabe:
    heinz_georg@xxx.de
    Herr
    Heinz Georg

    Die Korrektur wird vorgenommen.
    Aber der Vorname wird leider nicht mit Trennzeichen zurückgeliefert.

    Die Funktion strtok(string str, string token) liefert angeblich den token nicht mit oder so ...

    Habt ihr vielleicht eine Lösung womit ich das Trennzeichen auch noch mitliefern kann? Oder muss ich die Länge des Strings ermitteln ab dem Trennzeichen usw.

    Ich wäre sehr dankbar, wenn jemand schon eine fertige Lösung dafür hat.


    Grüsse,
    Ati

  • #2
    naja, das mit den sonderzeichen ist immer etwas kompliziert.. kennst du den namen "O'Reilly"? oder "Jeanne d'Arc"? oder "Antoine de Saint-Exupéry"?

    es wäre viel zu einfach, den string nach \b zu trennen und jedes wort mit großbuchstaben zu beginnen.

    Kommentar


    • #3
      hmmmm

      es ist mir schon klar, dass das mit Sonderzeichen kompliziert ist.

      Aber es reicht schon aus wenn etwa 70% Prozent mit der Korrektur abgedeckt sind.

      Der Rest wird halt nicht korriegiert an die DB weitergegeben.

      Ich denke eine 100% tige Korrektur wäre kaum umsetzbar, da es zu viele Möglichkeiten gibt.

      In Excel gibt es eine schöne Methode namens GROSS2().

      Kommentar


      • #4
        Aber es reicht schon aus wenn etwa 70% Prozent mit der Korrektur abgedeckt sind.
        Problem an der Sache ist, dass du die korrekten Eingaben verfälschst. Bei Leuten die Ihre Daten immer korrekt eingeben, erscheint dies schnell unprofessionell.

        Kommentar


        • #5
          dann erlaube den bindestrich und versuche aus ucwords() etwas zu basteln.

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            Problem an der Sache ist, dass du die korrekten Eingaben verfälschst. Bei Leuten die Ihre Daten immer korrekt eingeben, erscheint dies schnell unprofessionell.
            sehe ich genauso.
            Das ist Code den die Welt nicht braucht...

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              ich würde meinen Senf folgendermassen dazugeben:
              von Hand eine Schleife über die Zeichen programmieren, und einen $schalter führen, der sagt ob das Zeichen gross oder klein sein soll:
              - Ist das Zeichen ein Sonderzeichen, so wird der Schalter auf gross gestellt.
              - ist es kein Sonderzeichen so wird es gemäss Schalter konvertiert und der Schalter auf klein gestellt.

              PS Den genauen string für setlocale() kenne ich im Moment nicht, aber so ungefähr!

              Das kann man in php inline machen:
              PHP-Code:
              setlocale(LC_CTYPE,'DE');
              $schalter=true;
              for (
              $i=0i<strlen($name); i++) {
                
              $ch=$name{$i};
                if(
              strpos('backslash' -+',$ch)!==false)$schalter=true; 
                else {
                  $ch=($schalter?strtoupper($ch):strtolower($ch));
                  $name{$i}=$ch;
                  $schalter=false;
                }

              Kommentar


              • #8
                Es ist mir schon klar, dass das vielleicht unseriös sein mag.

                Jedoch ist das in der Welt von Email und Permisonsmakreting gängig, wenn man einen Stammpool von über 3 Mio Abonnenten hat, dass man vor allem postalische Sachen mit korrekten Daten versendet.

                Deshalb die Korrektur!

                Troztdem danke ich für eure Antworten.

                Grüsse,
                Ati

                Kommentar


                • #9
                  Re: Gross-/Kleinschreibung unter Berücksichtigung von Trennzeichen

                  Original geschrieben von atiKahn
                  Hallo Freunde,

                  ich habe ein Problem und zwar möchte ich bei Formulardaten wie Vorname, Nachname usw. die Gross-/Kleinschreibung korrigieren.
                  Ati, dann ist es seriöser, die Daten wie vom User angegeben in die Datenbank abzuspeichern und bei der Verwendung zu korrigieren. Damit verbaust Du mindestens nicht die Möglichkeit, es später besser zu machen.

                  Kommentar

                  Lädt...
                  X