Считайте цифры как отдельные слова, используя str_word_count в PHP - PullRequest
3 голосов
/ 18 мая 2019

Я пытаюсь использовать str_word_count для подсчета количества слов в сообщении.

$wordcount = str_word_count($message,0,'0123456789');

Я могу в значительной степени быть уверенным, что там будут только слова, цифры и пробелы.Сообщение является результатом закодированной речи в текстовое сообщение.

Одна вещь, с которой я борюсь, - это заставить его правильно возвращать нужное количество слов.Мне нужно, чтобы каждая цифра считалась своим собственным словом.Таким образом, «4 5 6» - это 3 слова, а «456» - также 3 слова.«ЧЕТЫРЕ» - это одно слово, а «ЧЕТЫРЕ 44» - это 3 слова и т. Д.

Документация для этой функции говорит, что я должен иметь возможность сделать это, указав символы, которые будут считаться словамив качестве третьего аргумента, который я сделал.Однако весь «блок» цифр по-прежнему считается только одним словом.Я попытался добавить пробелы между цифрами, но это визуально вызвало синтаксическую ошибку в Notepad ++ и , что, по сути, взорвало всю мою страницу PHP.

Я подумал о фильтрации строки для цифр, а затем о добавлениидлина до количества слов, но тогда я точно подсчитываю несколько цифр вдвое ... и это просто грязно!

Есть ли какой-либо способ, которым я могу сделать это изначально с str_word_count?

Ответы [ 2 ]

3 голосов
/ 18 мая 2019

Один из способов обойти это - сначала использовать preg_replace, чтобы разбить строки цифр на отдельные цифры, а затем посчитать слова. Например:

$message = "I have 123 chickens";
$message = preg_replace('/\s*(\d)/', ' $1', $message);
$wordcount = str_word_count($message, 0, '0123456789');
echo $wordcount;

выход

6

Демонстрация на 3v4l.org

1 голос
/ 18 мая 2019
$message = 'Hello 012THREE4five6';
echo str_word_count(preg_replace('/[0-9]/', ' zzz ', $message));
...