- preg_match_all: documentation ( source)
<?php
function count_words(string $string): int
{
return preg_match_all('/\b(?:[^\W\d_]|-)+\b/u', $string, $matches)
? count($matches[0])
: 0;
}
echo count_words(' - - - - - - - '), PHP_EOL; // 0
echo count_words('hello world'), PHP_EOL; // 2
echo count_words('hoho hé-hé haha'), PHP_EOL; // 3
echo count_words('hello 123'), PHP_EOL; // 1