Для подсчета слов в php-строке обычно мы можем использовать str_word_count, но я думаю, что не всегда хорошее решение
$var ="Hello world!"; echo str_word_count($str); print_r(str_word_count($str, 1));
-> выход
2 Array ( [0] => Hello [1] => world )
$var ="The example number 2 is a bad example it will not count numbers and punctuations !!";
-> выход:
14 Array ( [0] => The [1] => example [2] => number [3] => is [4] => a [5] => bad [6] => example [7] => it [8] => will [9] => not [10] => count [11] => numbers [12] => and [13] => punctuations )
Есть ли хорошая предопределенная функция, чтобы сделать это правильно или мне нужно использовать preg_match ()?
Вы всегда можете разделить строку по пробелам и подсчитать результаты:
$res = preg_split('/\s+/', $input); $count = count($res);
С вашей строкой
"The example number 2 is a bad example it will not count numbers and punctuations !!"
Этот код даст 16
.
Преимущество использования этого над explode(' ', $string)
заключается в том, что оно будет работать на многострочных строках, а также на вкладках, а не только на пробелах. Недостатком является то, что он медленнее.
Следующие функции count()
и explode()
будут эхо:
Число 1 в этой строке будет подсчитано и содержит следующий счетчик 8
PHP:
<?php $text = "The number 1 in this line will counted"; $count = count(explode(" ", $text)); echo "$text and it contains the following count $count"; ?>
Редактировать:
Примечание:
Регулярное выражение может быть изменено для принятия других символов, которые не включены в стандартный набор.
<?php $text = "The numbers 1 3 spaces and punctuations will not be counted !! . . "; $text = trim(preg_replace('/[^A-Za-z0-9\-]/', ' ', $text)); $text = preg_replace('/\s+/', ' ', $text); // used for the function to echo the line of text $string = $text; function clean($string) { return preg_replace('/[^A-Za-z0-9\-]/', ' ', $string); } echo clean($string); echo "<br>"; echo "There are "; echo $count = count(explode(" ", $text)); echo " words in this line, this includes the number(s)."; echo "<br>"; echo "It will not count punctuations."; ?>
Используйте count(explode(' ', $var));
Вы можете попробовать это,
<?php function word_count($sentence) { $break = explode(" ",$sentence); $count = count($break); return $count; } $count = "Count all words of this sentence"; echo word_count($count); //Output 6 ?>
Подробнее о Word Count в PHP
Вы также можете использовать приведенный ниже код, который он работает для меня.
function get_num_of_words($string) { $string = preg_replace('/\s+/', ' ', trim($string)); $words = explode(" ", $string); return count($words); } $string="php string word count in simple way"; echo $count=get_num_of_words($string);
Результатом будет 7
Я знаю, что вопрос старый, Тем не менее, я разделяю исправление, которое я принял для этого.
$str ="Hello world !"; // you can include allowed special characters as third param. print_r(str_word_count($str, 1, '!'));
вывода кода
Array ( [0] => Hello [1] => world [2] => ! )
если вы хотите включить больше слов, вы можете указать в качестве третьего параметра.
print_r(str_word_count($str, 1, '0..9.~!@#$%^&*()-_=+{}[]\|;:?/<>.,'));
от 0..9. будет включать все онемения, а другие специальные символы вставляются индивидуально.
анс:
function limit_text($text, $limit) { if(str_word_count($text, 0) > $limit) { $words = str_word_count($text, 2); $pos = array_keys($words); $text = substr($text, 0, $pos[$limit]) . '...'; } return $text; }