Gerd: durchgehende Großschreibung

Hallo! Kann mir jemand hier einen Tipp geben, wie ich verhindern kann, das man Formular-Einträge mit durchgehender Großschreibung macht.

  1. hi,

    Kann mir jemand hier einen Tipp geben, wie ich verhindern kann, das man Formular-Einträge mit durchgehender Großschreibung macht.

    Eigentlich gar nicht.

    Du könntest höchstens anschließend überprüfen, ob der komplette Text oder einzelne Worte nur aus Großbuchstaben bestehen. Wobei du da wiederum darauf achten müsstest, den ersten Buchstaben nicht mit zu betrachten, weil der ja öfter korrekterweise groß sein dürfte.

    Und wenn du dann Postings ablehnst, in denen Abkürzungen verwendet werden, die komplett aus Großbuchstaben bestehen, bist du immer noch kein Stück weiter ...

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Ja, so weit bin ich auch schon gekommen. Es muß doch einen Weg geben, permanente Großschreiber in die Schranken zu weisen. Einzelne Wörter ist ja ok, aber nicht den kompletten Text.
      Grüße! Gerd

      1. Hallihallo!

        Eine Idee, die mir grade einfällt, wäre:
        Zähle doch einfach im gesamten Posting die großen und die kleinen Buchstaben.
        Wenn die Anzahl der Großbuchstaben größer ist als ein bestimmter Prozentsatz des Gesamtpostings, stimmt höchstwahrscheinlich etwas nicht.

        Viele liebe Grüße,
        Der Dicki

        1. Den Vorschlag von Dicki finde ich auch am Besten. Wie lese ich am besten die Großbuchstaben im Text aus?

          1. Hallihallo!

            Den Vorschlag von Dicki finde ich auch am Besten. Wie lese ich am besten die Großbuchstaben im Text aus?

            Dazu fällt mir als "PHP- Frischling" spontan eine Möglichkeit ein:

            • mit strlen die Länge des Strings bestimmen
            • mit preg_match_all und dem einfachen Pattern [A-Z] die Anzahl der Großbuchstaben bestimmen.

            Zum Testen habe ich mir dieses kleine Skript gebastelt:

              
            <?php  
             $erster = "Ich bin ein String!";  
             $zweiter = "ICH BIN EIN STRING!";  
              
             $regex = "~[A-Z]~";  
              
             $eins = preg_match_all($regex, $erster, $test);  
             $zwei = preg_match_all($regex, $zweiter, $test);  
              
             $laenge = strlen($erster);  
              
             echo "String 1 enthält  ".$eins." Grossbuchstaben<br>";  
             echo "String 2 enthält ".$zwei." Grossbuchstaben<br>";  
             echo "String 1 ist ".$laenge." Zeichen lang.";  
            ?>  
            
            

            Das macht so ziemlich genau das, was ich meinte.
            Allerdings gehe ich mal davon aus, daß der eine oder andere Könner dieses Vorgehen als "mit Kanonen auf Spatzen schießen" bezeichnen wird...

            Viele liebe Grüße,
            Der Dicki

      2. Hi Gerd,

        Ja, so weit bin ich auch schon gekommen. Es muß doch einen Weg geben, permanente Großschreiber in die Schranken zu weisen. Einzelne Wörter ist ja ok, aber nicht den kompletten Text.

        Wenn du wirklich prüfen willst, ob der _komplette_ Text in Großbuchstaben geschrieben ist, dann sollte das hier klappen:

        $string = "DER TEXT IST IN GROßBUCHSTABEN";  
        if($string == [link:http://php.net/strtoupper@title=strtoupper]($string)) {  
          // alles in Großbuchstaben  
        }
        

        Der Vorschlag von Dicki ist aber deutlich besser ;-)

        MfG, Dennis.

      3. hi,

        Ja, so weit bin ich auch schon gekommen. Es muß doch einen Weg geben, permanente Großschreiber in die Schranken zu weisen. Einzelne Wörter ist ja ok, aber nicht den kompletten Text.

        Eine primitive Überprüfung könnte darin bestehen, den mit strtoupper() behandelten Text mit dem Original zu vergleichen - sind beide identisch, dann waren im Text alle Buchstaben ausschließlich Großbuchstaben.

        Aber sobald nur ein einzige Kleinbuchstabe verwendet wurde, schlägt diese - wie gesagt, primitive - Überprüfung schon nicht mehr an.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo wahsaga.

          Eine primitive Überprüfung könnte darin bestehen, den mit strtoupper() behandelten Text mit dem Original zu vergleichen - sind beide identisch, dann waren im Text alle Buchstaben ausschließlich Großbuchstaben.

          Aber sobald nur ein einzige Kleinbuchstabe verwendet wurde, schlägt diese - wie gesagt, primitive - Überprüfung schon nicht mehr an.

          Darum könnte man hier vielleicht mit levenshtein() arbeiten.

          Einen schönen Samstag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
          [HTML Design Constraints: Logical Markup]
          1. hi,

            Darum könnte man hier vielleicht mit levenshtein() arbeiten.

            Wenn man nur Nachrichten mit einer Länge kleiner gleich 255 Zeichen hat ...

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Hallo wahsaga.

              Darum könnte man hier vielleicht mit levenshtein() arbeiten.

              Wenn man nur Nachrichten mit einer Länge kleiner gleich 255 Zeichen hat ...

              Diese Beschränkung habe ich in der Tat überlesen. Aber eine Alternative wird ja im Handbuch verlinkt.

              Einen schönen Samstag noch.

              Gruß, Ashura

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
              [HTML Design Constraints: Logical Markup]