Stefanie Brundmann: Wie zähle ich das Vorkommen eines Wortes in einer Variablen?

Hallo,

ich habe

$variable1='Hallo, dies ist ein Hallo-Test';

Ich will wissen, wie oft das Wort "Hallo" in $variable1 vorkommt. Wie mache ich das?

Mit count_chars klappts nicht, da bin ich
wohl auf der falschen Fährte.

Vielen Dank und viele Grüße!

  1. Hallo Stefanie,

    Ich will wissen, wie oft das Wort "Hallo" in $variable1 vorkommt. Wie mache ich das?

    Spontan würde mir preg_match_all[1] einfallen. Kann allerdings sein,
    dass es noch performantere Möglichkeiten gibt.

    [1] http://www.php.net/manual/en/function.preg-match-all.php

    Gruß,
    dimde

  2. Hi

    Ich will wissen, wie oft das Wort "Hallo" in $variable1 vorkommt. Wie mache ich das?

    http://selfphp.info/funktionsreferenz/string_funktionen/substr_count.php

    Gruß,
    Benne

    1. Vielen Dank!

      Aber gibts auch eine Möglichkeit (gerne komplizierter), die auch mit PHP Version 3.0.18 funktioniert (Strato, ja... ich weiß... ich muß da weg)...?

      Hi

      Ich will wissen, wie oft das Wort "Hallo" in $variable1 vorkommt. Wie mache ich das?

      http://selfphp.info/funktionsreferenz/string_funktionen/substr_count.php

      Gruß,
      Benne

      1. Hallo,

        Aber gibts auch eine Möglichkeit (gerne komplizierter), die auch mit PHP Version 3.0.18 funktioniert (Strato, ja... ich weiß... ich muß da weg)...?

        Strato bietet doch auch PHP4 an.

        Gruß,
        dimde

      2. http://selfphp.info/funktionsreferenz/string_funktionen/substr_count.php
        Aber gibts auch eine Möglichkeit (gerne komplizierter), die auch mit PHP Version 3.0.18 funktioniert?

        dann musst du die Funktion wahrscheinlich selbst schreiben:
        Spontan würde mir da folgende Vorgehensweise einfallen.
        Du versuchst in eine Schleife deinen gesuchten Begriff einfach mit "str_replace" so lange zu ersetzen, bis es nicht mehr geht. Die Anzahl der Schleifendruchgänge sind dann die Anzahl der Vorkommen.
        Also ungefähr so:

        $var = "Toller Toll-Text";
        $i = 0;
        while(strpos($var, "Toll") >= 0) {
          $var = str_replace($var, "Toll");
          $i++;
        }
        echo $i . "Vorkommen von Toll";

        Gruß,
        Benne

      3. Huhu Stefanie

        Aber gibts auch eine Möglichkeit (gerne komplizierter), die auch mit PHP Version 3.0.18 funktioniert (Strato, ja... ich weiß... ich muß da weg)...?

        evtl. funktioniert folgende Lösung, allerdings wage ich mich dunkel zu erinnern, dass PHP 3 kein foreach kennt.
        Das müsstest Du dann umändern.
        Bevor Du Dich da lange mit herumärgerst würde ich Dir aber empfehlen den Provider zu wechseln, wenn er PHP nicht updaten kann/ will.

        <?php
        /**
        * ocurrences
        */

        function occurences($w,$v,$case=false)
        {
         if (!$w) return -1;
         if (!$case){
           $w = strtolower($w);
           $v = strtolower($v);
         }
         $tmp = explode($w,$v);
         return count($tmp)-1;
        }

        $s = 'Diese Zeichenkette enthält viele e und auch i';
        $test = array('e','','ie','ei','i','d');

        printf('<h1>%s</h1>',$s);
        foreach($test as $t){
         printf('%s ist %d Mal enthalten<br>',$t, occurences($t,$s));
        }
        ;
        ?>

        Viele Grüße

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday
      4. Hi,

        Aber gibts auch eine Möglichkeit (gerne komplizierter), die auch mit PHP Version 3.0.18 funktioniert

        Ich weiß nicht, ob split() in 3.0.18 vorhanden ist, aber da könntest Du doch den String einfach am Wort 'Hallo' trennen und die Zahl des Ergebnis-Arrays abfragen (minus 1 gleich Anzahl 'Hallo') - sehr einfach

        (Strato, ja... ich weiß... ich muß da weg)...?

        stimmt!

        Gruß, Andreas

      5. Hallo!

        Aber gibts auch eine Möglichkeit (gerne komplizierter), die auch mit PHP Version 3.0.18 funktioniert (Strato, ja... ich weiß... ich muß da weg)...?

        Wie gesagt, Du bist nicht die einzige mit dem Problem: [pref:t=32017&m=173267]

        Andreas

  3. Hallo!

    Was soll das Doppelposting?

    Gruß
    Andreas