Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
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 - возвращается массив, индексами которого являются позиции в строке, а значениями - соответствующие слова.
Эта функция считает словами последовательности алфавитных символов, возможно, включающие, но не начинающихся с "'" и "-". Набор символов, считающихся алфавитными, зависит от текущей локали.
Пример 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;
Вывод:
Чтобы заставить функцию работать правильно с русскими буквами нужно прописать в 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