str_word_count

(PHP 4 >= 4.3.0, PHP 5)

str_word_count - Возвращает информацию о словах, входящих в строку

Описание

mixed str_word_count ( string string [, int format [, Charlist]] )

Подсчитывает количество слов, входящих в строку string. Если необязательный аргумент format не передан, возвращается целое число, равное количеству слов. В случае, если аргумент format передан, возвращается массив, содержимое которого зависит от значения этого аргумента. Ниже описаны допустимые значения аргумента format и соответствующие им возвращаемые значения.

  • 0 – возвращает количество найденных слов
  • 1 - возвращается массив, содержащий все слова, входящие в строку string.
  • 2 - возвращается массив, индексами которого являются позиции в строке, а значениями - соответствующие слова.
Charlist – Список дополнительных символов, которые будут рассматриваться как “слово”.

Эта функция считает словами последовательности алфавитных символов, возможно, включающие, но не начинающихся с "'" и "-". Набор символов, считающихся алфавитными, зависит от текущей локали.

Пример 1. Пример использования str_word_count()
$str = "Hello friend, you're
        looking          good today!";

$a   = str_word_count($str, 1);
$b   = str_word_count($str, 2);
$c   = str_word_count($str);

print_r($a);
print_r($b);
echo $c;

Вывод:

Array ( [0] => Hello [1] => friend [2] => you're [3] => looking [4] => good [5] => today ) Array ( [0] => Hello [6] => friend [14] => you're [29] => looking [46] => good [51] => today ) 6

Чтобы заставить функцию работать правильно с русскими буквами нужно прописать в charlist все кириллические символы, причём и верхним и нижним регистром.

Таким образом, наша функция должна выглядеть так:
str_word_count($str,0,”АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя”)
Немного подумав, можно укоротить эту строчку. В таблице ASCII все русские буквы (кроме “Ё” и “ё”) имеют коды с 192 по 256. Также, у нас есть функция chr(), которая возвращает символ по его коду. Можно сделать простой цикл, который сам запишет в переменную буквы русского алфавита. Понадобится ещё функция iconv(), чтобы перевести текст из кодировки utf-8 в cp1251, так как в utf-8 другие коды символов.
<?
$abc='';
for ( $i = 192; $i < 256; $i++ ) {
    $abc.= chr($i); //Цикл на каждом шагу добавляет к переменной $abc новую букву
}
$abc=iconv( 'cp1251', 'utf-8', $abc); //Переводим строку из кодировки utf-8 в сз1251
echo 'Количество слов в тексте: ', str_word_count($text,0,$abc);?>
Получилось не намного короче, зато более логично. Мы же всё таки программированием занимаемся. В итоге наш код будет выглядеть так:
<body>
<form name="text-form" method="post">
    <textarea name="text" cols="80" rows="6"><?=(isset($_POST['text'])?$_POST['text']:"Введите текст");?></textarea>
    <br/>
    <input type="submit" value="Отправить"/>
    <input type="reset" value="Очистить"/>
</form>
<?
$text=$_POST['text'];
$text_nonspace=str_replace(array(" "), '', $text);
echo 'Количество символов с пробелами: ' , mb_strlen($text, 'utf-8');
echo '<br/>','Количество символов без пробелов: ' , mb_strlen($text_nonspace, 'utf-8');
for ( $i = 192; $i < 256; $i++ ) {$abc .= chr($i);}
$abc=iconv( 'cp1251', 'utf-8', $abc);
echo '<br/>','Количество слов в тексте: ', str_word_count($text,0,$abc);

?>
</body>

Смотрите также explode(), preg_split(), split(), count_chars() и substr_count().

Все функции строки
Описание на ru2.php.net
Описание на php.ru