Home >PHP >PHP manuál - funkce >str_word_count

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()