Str word count: примеры (PHP)
str_word_count(string string [, int format [, string characters]]): mixedФункция str_word_count() подсчитывает количество слов в строке. Она применяется для анализа текста, например, при обработке пользовательского ввода, генерации мета-описаний или проверке длины текста.
Функция принимает три аргумента:
- $string (обязательный) - исходная строка для анализа.
- $format (опциональный, по умолчанию 0) - определяет формат возвращаемого значения.
0 - возвращает целое число (количество слов).
1 - возвращает массив, содержащий все слова, найденные в строке.
2 - возвращает ассоциативный массив, где ключ - позиция слова в строке, значение - само слово. - $characters (опциональный) - строка дополнительных символов, которые будут рассматриваться как часть слов. По умолчанию учитываются буквы и символ амперсанда (&).
<?php
$text = 'Hello world, welcome to PHP!';
echo str_word_count($text);
?>5
<?php
$text = 'Hello world, welcome to PHP!';
print_r(str_word_count($text, 1));
?>Array
(
[0] => Hello
[1] => world
[2] => welcome
[3] => to
[4] => PHP
)<?php
$text = 'Hello world';
print_r(str_word_count($text, 2));
?>Array
(
[0] => Hello
[6] => world
)<?php
$text = 'Слово1 слово2, слово3!';
echo str_word_count($text, 0, '0..9');
?>3
Некоторые функции для работы со строками могут служить альтернативой или дополнением.
Разбивает строку по разделителю. Полезно, когда слова разделены конкретным символом. str_word_count() интеллектуальнее обрабатывает пунктуацию.
Разбивает строку по регулярному выражению. Дает максимальный контроль над определением, что является словом. Более ресурсоемкая.
Подсчитывает количество вхождений подстроки. Может использоваться для поиска конкретного слова.
Функция считает словами строки, состоящие из пунктуации, если они не отделены пробелами.
<?php
$text = 'Test... is it one word?';
print_r(str_word_count($text, 1));
?>Array
(
[0] => Test
[1] => is
[2] => it
[3] => one
[4] => word
)Многоточие не считается словом, но если бы не было пробелов, результат был бы другим.
<?php
$text = 'My number is 12345';
echo str_word_count($text);
?>3
Цифра '12345' не считается словом без указания третьего параметра.
В PHP 8.0 поведение функции str_word_count() было изменено для лучшей совместимости с Unicode. Теперь она корректно обрабатывает многобайтовые строки, когда используется третий параметр. В версиях до PHP 8.0 подсчет мог быть некорректен для не-ASCII символов, если не была включена расширение mbstring.
<?php
$text = 'Well-known phrase or up-to-date?';
// Без учета дефиса
print_r(str_word_count($text, 1));
// С учетом дефиса как части слова
print_r(str_word_count($text, 1, '-'));
?>Array
(
[0] => Well
[1] => known
[2] => phrase
[3] => or
[4] => up
[5] => to
[6] => date
)
Array
(
[0] => Well-known
[1] => phrase
[2] => or
[3] => up-to-date
)<?php
$text = 'apple orange apple banana orange';
$words = str_word_count($text, 1);
$uniqueWords = array_count_values($words);
print_r($uniqueWords);
?>Array
(
[apple] => 2
[orange] => 2
[banana] => 1
)<?php
$text = 'This is a sample text for demonstration.';
$wordsWithPos = str_word_count($text, 2);
// Найти позицию слова 'sample'
foreach ($wordsWithPos as $pos => $word) {
if ($word === 'sample') {
echo 'Слово "sample" начинается на позиции: ' . $pos;
}
}
?>Слово "sample" начинается на позиции: 10
<?php
$html = '<p>Hello <strong>world</strong>!</p>';
// Предварительно удаляем теги
$cleanText = strip_tags($html);
echo str_word_count($cleanText);
?>2
Str word count в Python
Метод split() разбивает строку по пробелам, но требуется дополнительная обработка пунктуации.
text = 'Hello world, welcome!'
words = text.split()
print(len(words)) # Простой подсчет
print(words) # Список слов3 ['Hello', 'world,', 'welcome!']
Str word count в Javascript
Метод split() с регулярным выражением для фильтрации не-слов.
let text = 'Hello world, welcome!';
let words = text.split(/\W+/).filter(word => word.length > 0);
console.log(words.length); // 3
console.log(words); // ['Hello', 'world', 'welcome']Str word count в MySQL
Отсутствует прямая функция. Можно использовать LENGTH() и REPLACE() для приблизительного подсчета.
SELECT
LENGTH('Hello world') - LENGTH(REPLACE('Hello world', ' ', '')) + 1
AS word_count;word_count: 2