Jeena Paradies: Anzahl "Wörter" in einem String zählen

Beitrag lesen

Hallo,

ich möchte die Anzahl von "Wörtern" in einem String zählen. Meine Art zu zählen bedeutet aber:
Alle Zeichen sind erlaubt. Wörter werden durch ein Leezeichen voneinander getrennt.
Bau ich mir lieber mit explode und array_count selber eine Funktion oder kann man str_word_count dazu überreden?

Na explode ist etwas doof weil das wieder sehr viel mehr Speicher braucht, so weit ich das verstanden habe macht explode nicht nur ein Array mit Pointern sondern speichert auch Kopien der Teilstrings zusätzlich im Speicher.

Ich hab mal was gebastelt das auch sehr große Strings durchsuchen kann da es nur 3 zusätzliche Integer braucht um den String durchzulaufen und die Wörter zu zählen, somit kann der String fast so groß sein wie der Rest des zur Verfügung stehenden Speichers.

Auch sollte es ziemlich schnell sein da es nur O(n) ist und den string nur einmal durchläuft. Ich hoffe nur dass $str[0] nur das macht das ich denke dass es macht und nicht irgendwie was magisches.

  
<?php  
  
function word_count($str)  
{  
    if ($str == "")  
    {  
        return 0;  
    }  
  
    $words = 0;  
    $found_word = false;  
  
    for($i = 0; isset($str[$i]); $i++)  
    {  
        if ($str[$i] != " ")  
        {  
            if (!$found_word)  
            {  
                $words++;  
            }  
            $found_word = true;  
        }  
        else  
        {  
            $found_word = false;  
        }  
    }  
  
    return $words;  
}  
  
echo word_count(" abc  de f g n ");  
  
// => 5  

Jeena