str_word_count
str_word_count($retezec, $format, $znaky)
Spočítá slova v řetězci, případně je vrátí jako pole. Za slovo považuje souvislou řadu písmen, ke které smí patřit apostrof a spojovník. Spolehlivá je jen pro text bez diakritiky.
Parametry
- $retezec – zpracovávaný text.
- $format – nepovinný. 0 = vrátí počet slov (výchozí), 1 = pole slov, 2 = pole slov, kde klíčem je pozice slova v řetězci.
- $znaky – nepovinný, další znaky, které se mají brát jako součást slova (například číslice).
Příklady
echo str_word_count("The quick brown fox"); // 4
print_r(str_word_count("Hello big world", 1)); // Array ( [0] => Hello [1] => big [2] => world )
print_r(str_word_count("Hello big world", 2)); // Array ( [0] => Hello [6] => big [10] => world )
// apostrof a spojovník patří ke slovu
echo str_word_count("rock'n'roll e-mail"); // 2
// číslice se za součást slova nepočítají …
echo str_word_count("PHP 7 a PHP 8"); // 3
// … dokud je nepřidáte třetím parametrem
echo str_word_count("PHP 7 a PHP 8", 0, "0123456789"); // 5
// český text – slova spočítá regulární výraz s modifikátorem u
echo preg_match_all('/[\p{L}\p{N}]+/u', "Příliš žluťoučký kůň úpěl"); // 4
// nebo počet částí oddělených mezerami
echo count(preg_split('/\s+/u', trim(" Příliš žluťoučký kůň "))); // 3
Na co si dát pozor
- Co je písmeno, určuje nastavení locale serveru. Písmena s diakritikou v textu UTF-8 funkce obvykle nepozná a slovo v tom místě rozdělí, takže u českého textu vrací vyšší počet. Použijte preg_match_all() podle příkladu.
- Číslice nejsou písmena: „PHP 7“ je jedno slovo, ne dvě. Přidat je lze třetím parametrem.
- HTML značky se počítají jako text. Z obsahu článku je předem odstraňte přes strip_tags().
- Pozice ve formátu 2 jsou v bajtech, ne ve znacích.
Příbuzné funkce:
explode()
substr_count()
preg_match()