Verschiedene Zeichen in beliebiger Reihenfolge

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

  • Verschiedene Zeichen in beliebiger Reihenfolge

    Wie kann ich verschiedene Zeichen in beliebiger Reihenfolge, von denen jedes vorkommen muss, auf vorkommen prüfen (Regexp)?
    z.B:

    die Buchstaben von "Handball" in "Hnllbaad" = true

    aber

    die Buchstaben von "Handball" in "Hnlbad" = false

    und

    die Buchstaben von "Handball" in "Hnllbaadol" = false

    Ist das Problem soweit klar?

  • #2
    ganz spontan:

    array mit buchstaben

    array durchlaufen, prüfen ob buchstabe im string ist.

    feddisch!

    Kommentar


    • #3
      nja...
      z.B:
      array: h,a,n,d
      wort: landhand

      oder

      array: h,a,n,d,d
      wort: hand

      beides ginge und beides wäre falsch...

      Kommentar


      • #4
        Hi, das klappt schon ganz gut mit arrays. z.B. kannst du deinen String ja auch in ein Array reinpacken:

        array1: {h,a,n,d,b,a,l,l}
        array2: {l,a,l,b,d,n,h,a}

        nun nimmst du dir das erste Element von array1 und schaust ob es das auch in array2 gibt ... wenn ja, schmeisst du das passende Element aus array2 raus .. in diesem fall das "h" --> somit array2: {l,a,l,b,d,n,a}

        das machst du jetzt mit allen Elementen aus array1 .. wenn array2 danach leer ist, dann ist das ergebnis = true, wenn nicht dann = false .... und wenn ein Element nicht gefunden wird, ist es eben sofort false

        Das ist vielleicht nicht "die" Lösung, aber wenigsten eine Lösung


        (das geht auch indem du den string nicht in ein Array reinpackst, aber so fand ich es anschaulicher )
        [color=red]Geht nicht[/color] ist keine Fehlermeldung

        Kommentar


        • #5
          so sollte es gehn, kann aber sein das Syntaxfehler drin sind:

          PHP-Code:
              function CountChars($value) {
                  
          // Jeden Buchstaben und sein vorkommen ermitteln
                
          for ($i 0$i <= strlen($value) -1$i++) {
                    
          $aryDummy[$value{$i}] += 1;
                  }
                  return 
          $aryDummy;
              }

              function 
          CheckVorkommen ($original$value) {
                  
          // Original String zerlegen
                
          $aryOriginal CountChars($original);
                  
          // Prüfstring zerlegen
                  
          $aryInput CountChars($value);
                  
          // Schlüssel ermitteln, also alle vorhanden Buchstaben
                  
          $aryChars array_keys($aryOriginal);
                  for (
          $i 0$i <= count($aryChars) -1$i++) {
                      
          // Jeden Buchstaben auf die Anzahl Prüfen, ist die Anzahl eines Buchstaben einmal unterschiedlich
                      // hast du bereits dein False ergebnis
                    
          if ($aryOriginal[$aryChars[$i]] <> $aryInput[$aryChars[$i]]) return false;
                  }
                  return 
          true;
              }
              
              if (
          CheckVorkommen("Handball""Handball")) {
                echo 
          "Richtig!";
              } else {
                echo 
          "Falsch!";
              } 
          Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

          Kommentar


          • #6
            Probier mal so:

            PHP-Code:
            $vorgabe "Handball";
            $pruefstring "Hndbaall";
            $vorgabe_array count_chars($vorgabe1);
            $pruef_array count_chars($pruefstring1);
            if (
            $vorgabe_array == $pruef_array) {
             echo 
            "true<br>";
            } else {
             echo 
            "false<br>";

            EDIT:
            Hoppla, grad gesehen, dass die Funktion count_chars erst ab PHP4 eingebaut ist. Im Zweifelsfalle also doch eher die selbstgebaute Funktion aus obigen Posting verwenden.
            Zuletzt geändert von Der Quästor; 24.03.2004, 18:10.

            Kommentar


            • #7
              OffTopic:
              Kann man Arrays direkt mit einander vergleichen?
              Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

              Kommentar


              • #8
                Cool, dann geht es auch so
                PHP-Code:
                    if (count_chars("Handball"1) == count_chars("Handbal"1)) {
                      echo 
                "Richtig!";
                    } else {
                      echo 
                "Falsch!";
                    } 
                Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

                Kommentar


                • #9
                  Thx, vielmals.
                  Weiss jemand von euch, wo ich eine deutsche Wörterliste finde?
                  Also eine im Stil von:

                  Code:
                  A
                  AA
                  Aachen
                  Aal
                  Aaltierchen
                  Aar
                  ...
                  Ist sehr wichtig. Thx ^^

                  Kommentar


                  • #10
                    Original geschrieben von Celebi
                    Weiss jemand von euch, wo ich eine deutsche Wörterliste finde?
                    Im Duden.

                    Kommentar


                    • #11
                      ...
                      Aufm PC, im genannten Format, also mit \n getrennt...

                      Kommentar


                      • #12
                        Ist sehr wichtig.

                        Kommentar


                        • #13
                          Original geschrieben von Pascal P.
                          OffTopic:
                          Kann man Arrays direkt mit einander vergleichen?
                          ja, mit array_diff
                          Die Musikreview Seite

                          hi, i'm a signature virus. copy me into your signature to help me spread.

                          Kommentar

                          Lädt...
                          X