Willi(bald): Anzahl von treffern in einem String ermitteln

Ich habe in einem String einen längeren Text. Nun würde ich gerne Wissen wie oft zum Beispiel das Wort Zauber in diesem String vorkommt. Muss ich diesen String erst in ein Arry zerlegen, oder geht das irgendwie auch einfacher?

Willi(bald)

  1. Hallo Willi(bald),

    Ich habe in einem String einen längeren Text. Nun würde ich gerne Wissen wie oft zum Beispiel das Wort Zauber in diesem String vorkommt. Muss ich diesen String erst in ein Arry zerlegen, oder geht das irgendwie auch einfacher?

    Dafür gibt es substr_count:

    var_dump(substr_count(strtolower($text), 'zauber'));
    

    LG,
    CK

    1. hi ck

      var_dump(substr_count(strtolower($text), 'zauber'));

      das war genau was ich such...

      Doch aber was ist wenn ich alle Wörter zählen möchte.

      $string ='Der Zauber aus dem Zauber';

      Ich habe versucht den String in ein Arry zu schreiben:

      $woerter= (str_word_count($seiteninhalt , 1, 'äüöÄÜÖß'));

      so ist jedes Wort in einer Zelle, aber wie kann ich nun diese Worte zählen, so das anschliessend eine solche Liste als Ergebniss kommt:

      der 1 Zauber 2 aus 1 dem 1

      1. Hallo Willi(bald),

        preg_match_all könnte dein Freund sein.

        Ein Wort könnte zum Beispiel ein Buchstabe begrenzt von 2 Leerzeichen sein. Wenn der String mit einem Wort beginnt, steht natürlich kein Leerzeichen davor. Genauso musst du bestimmte Satzzeichen zulassen.

        \w+\s+ beispielsweise zählt 1 oder mehrere Buchstaben (genauer Buchstabe, Ziffer oder Unterstrich) gefolgt von einem oder mehreren Whitespacezeichen.

        Reguläre Ausdrücke sind zudem ziemlich aufwändig, sowohl für den Ersteller als auch für den Rechner.

        Ggf. reicht auch explode(). Das hängt vom konkreten Anwendungsfall ab.

        Bis demnächst
        Matthias

        --
        Signaturen sind bloed (Steel) und Markdown ist mächtig.
        1. Hallo,

          Ggf. reicht auch explode(). Das hängt vom konkreten Anwendungsfall ab.

          • alle Trennzeichen ersetzen durch ein einziges
          • explode durchführen
          • Summenarray aufbauen über die Elemente des explodeten Strings (Werte als Key benutzen)

          fertig, oder?

          FrageKlaus

          1. Hallo FrageKlaus,

            Ggf. reicht auch explode(). Das hängt vom konkreten Anwendungsfall ab.

            • alle Trennzeichen ersetzen durch ein einziges

            Inclusive Satzzeichen.

            • explode durchführen
            • Summenarray aufbauen über die Elemente des explodeten Strings (Werte als Key benutzen)

            fertig, oder?

            Wenns nur ums zählen geht, reicht sizeof, oder?

            Bis demnächst
            Matthias

            --
            Signaturen sind bloed (Steel) und Markdown ist mächtig.
            1. Hallo Matthias

              Ggf. reicht auch explode(). Das hängt vom konkreten Anwendungsfall ab.

              • alle Trennzeichen ersetzen durch ein einziges

              Inclusive Satzzeichen.

              Ja, alle Zeichen, die Worte voneinander trennen sollen

              • explode durchführen
              • Summenarray aufbauen über die Elemente des explodeten Strings (Werte als Key benutzen)

              Wenns nur ums zählen geht, reicht sizeof, oder?

              Aber nicht, wenn man feststellen will, wie oft jedes Wort enthalten ist im Text. Eventuell muss man da auch noch Case/Caseless berücksichtigen, bevor man ein Array aus dem Text macht.

              LG
              FrageKlaus

      2. Hallo,

        solche Liste als Ergebniss:

        bitte Ergebnis mit nur einem s!

        der 1 Zauber 2 aus 1 dem 1

        hierbei könnte "array_count_values" helfen!

        Gruß
        Kalk