mortimer: Wie erkenne ich die anzahl der Grossbuchstaben?

Ich habe ein Inutfield in das die Benutzer einen Nickname füllen dürfen..

Doch will ich dass sie nicht mehr als 3 Grossbuchstaben verwenden...

wie finde ich denn heraus ob in einem String/array grossbuchstaben benutzt wurden und wie viele es sind?

Z.B:

aspirant < OK
JimmiPop < OK
MrBigNoise < OK
ClaraDieDoofeKuh < FEHLER

Eine Idee?

ciao

  1. Tachen,
    ich würde es via ASCII-Tabelle und Referenznummer versuchen.

    z.B.

    $str = 'Hallo Welt !';

    $count = 0;
    for($i=0; $i<strlen($str); $i++) {
     if(ord($str[$i]) >= 65 && ord($str[$i]) <=90)
      $count++;
    }
    echo $count;

    Greetz David

  2. Hello,

    musst Du wohl eine Zählfunktion bauen, die den String von vorne bis hinten durchgeht und die Zeichen auswertet..-

    $text = 'Hallo Du Blöder PC, wieviel Buchataben sind drin?')
      $anz_kl = 0;
      $anz_gt = 0;

    for($i=0 ; $i<strlen($text ; $i++)
      {
        if (ord(text{$i})>64 and ord(text{$i})<91)
        {
          $anz_gr++;
        }
        elseif(ord(text{$i})>98 and ord(text{$i})<123)
        {
          $anz_gr++;
        }
        elseif (ord(text{$i})==142)                             #Ä
        ### hier mal selber
        elseif (ord(text{$i})==153)                             #Ö
        ### weitermachen

    }

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. elseif (ord(text{$i})==142)                             #Ä
          ### hier mal selber
          elseif (ord(text{$i})==153)                             #Ö
          ### weitermachen

      Und Ü ?=)

      ciao

      1. hi,

        Und Ü ?=)

        hast du

        ### hier mal selber
            ### weitermachen

        überlesen ...?

        gruß,
        wahsaga

        --
        [ Hier könnte Ihre Werbung stehen! ]
        1. hast du

          ### hier mal selber
              ### weitermachen
          überlesen ...?

          nein... aber ich kenne die ASCI-id für Ü nicht =/

          ciao

          1. Hello,

            hast du

            ### hier mal selber
                ### weitermachen
            überlesen ...?

            nein... aber ich kenne die ASCI-id für Ü nicht =/

            echo "<pre>";
              for ($ascii=0; $ascii<256; $ascii++)
              {
                echo "$ascii\t".chr($ascii)
              }
              echo "</re>";

            Probier da mal...

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hello,

              so sieht es etwas besser aus.
              Ich garantiere aber nicht dafür, dass der browser alle Zeichen richtig darstellt.

              <?php   ### ascii.php ###

              echo "<pre>";
                for ($ascii=0; $ascii<256; $ascii++)
                {
                  echo "$ascii ".chr($ascii)."\t";
                  if ($ascii % 5 == 0) echo "<br />\n";
                }
                echo "</re>";
              ?>

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
          2. Huhu mortimer

            nein... aber ich kenne die ASCI-id für Ü nicht =/

            Aha.

            Dann probier doch mal eine ASCII-Tabelle zu erzeugen.
            Schau Dir dazu die Funktionen chr() und ord() an.

            Mit einer for-Schleife sollte das klappen ...

            Viele Grüße

            lulu

            oder guck halt hier nach

            http://www.asciitable.com/

            --
            bythewaythewebsuxgoofflineandenjoytheday
            1. Hello,

              nein... aber ich kenne die ASCI-id für Ü nicht =/

              Aha.

              Dann probier doch mal eine ASCII-Tabelle zu erzeugen.
              Schau Dir dazu die Funktionen chr() und ord() an.

              Mit einer for-Schleife sollte das klappen ...
              oder guck halt hier nach

              http://www.asciitable.com/

              Das ist wirklich nicht so prophan. Die Darstellung im Browser ist eben nicht Ascii, sondern wahrscheinlich Ansi-schlagmichtot-Standard...

              Wie kann man denn mit einem Browser ASCII generieren?

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
          3. Start > Programme > Zubehör > Systemprogramme > Zeichentabelle
            Gunnar

            --
            Good results come from experience; and experience comes from bad results.
            1. Hello,

              Start > Programme > Zubehör > Systemprogramme > Zeichentabelle
              Gunnar

              Das ist ANSI aber nicht ASCII

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              1. Das ist ANSI aber nicht ASCII

                Tom,
                Wo du Recht hast...

                In ASCII gibt's natürlich kein Ü.
                Gunnar

                --
                Good results come from experience; and experience comes from bad results.
                1. Hello,

                  Das ist ANSI aber nicht ASCII

                  Tom,
                  Wo du Recht hast...

                  In ASCII gibt's natürlich kein Ü.
                  Gunnar

                  Doch, in extended ASCII ist es das Zeichen 154 und da kleine dazu hat die Nummer 129. Diese Ganze Tabelle ist Quasi mit den ersten PCs oder sogar schon mit den Terminals, die es davor gab entstanden. Das war aien Auftrag von IBM an Forma Herkules. Die haben damals Platinen für Terminals und später Grafikkarten verbrochen.

                  Mal sehen, ob man in Goolge was finden kann über die Geschichte.

                  Liebe Grüße aus http://www.braunschweig.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  1. Doch, in extended ASCII

                    Was bitte ist extended ASCII?

                    Zwischen 128 und 255 hat doch jeder sein eigenes Süppchen gekocht. Oder ist der DOS-Zeichensatz jemals offizieller Standard geworden?

                    Gunnar

                    --
                    Good results come from experience; and experience comes from bad results.
  3. Huhu mortimer

    Eine Idee?

    Per preg_replace() alles was nicht Grossbuchstabe ist entfernen.
    Dann die Länge des verbeleibenden Strings mit strlen() holen.

    Ungefähr so:

    $test = 'RumBle In tHe dJunGle';

    echo strlen(preg_replace ('#[^A-Z]#','', $test));

    Für Umlaute muss man noch die locale-Einstellungen richtig setzen.

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
  4. hi,

    Doch will ich dass sie nicht mehr als 3 Grossbuchstaben verwenden...

    wie finde ich denn heraus ob in einem String/array grossbuchstaben benutzt wurden und wie viele es sind?

    die lösungen der anderen sind zwar auch nicht unbedingt schlecht, aber vielleicht kann man es ja auch etwas "raffinierter" angehen.

    kopie des strings mit strtolower in kleinbuchstaben umwandeln, und anschliessend mit similar_text() [1] ermitteln, wie viele zeichen in den beiden strings voneinander abweichen.
    da similar_text() die anzahl der übereinstimmungen zurückliefert, muss man diesen wert dann halt von der stringlänge abziehen, um die abweichungen rauszubekommen - na und wenn der wert dann > 3 ist ...

    achtung: könnte u.U. probleme mit den deutschen umlauten geben; ich vermute mal, dass strtolower diese nicht korrekt umwandelt ...

    gruß,
    wahsaga

    [1] http://de3.php.net/manual/de/function.similar-text.php

    --
    [ Hier könnte Ihre Werbung stehen! ]