Обзор PHP-функций для работы со строками и практическое их применение с учетом кодировки UTF-8.
Количество символов
Получить длину строки
Функция strlen($string) возвращает длину строки, но возвращает неправильный результат если в строке есть кириллица в UTF-8, поэтому нужно использовать mb_strlen().
| $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; |
| |
| echo strlen($text); |
| echo mb_strlen($text); |
Количество символов без пробелов
| $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; |
| $str = mb_ereg_replace('[\s]', '', $text); |
| echo mb_strlen($str); |
Количество слов с строке
Функция str_word_count() возвращает количество слов в строке, но символы обрамленные пробелами будет считаться за слово, например « - ». Так же функция не работает с UTF-8, как видно в примере:
| $text = 'Lorem Ipsum - is simply dummy!'; |
| echo str_word_count($text); |
| |
| $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; |
| echo str_word_count($text); |
Рабочий вариант:
| $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; |
| $str = preg_replace("/[[:punct:]]/", '', $text); |
| $str = mb_ereg_replace('[\s]+', ' ', $str); |
| $words = explode(' ', $str); |
| echo count($words); |
Получить количество переносов в строке
| $text = 'Съешь ещё - этих |
| мягких французских булок, |
| да выпей же чаю.'; |
| |
| echo substr_count($text, PHP_EOL); |
Количество букв в строке
| $text = 'Съешь ещё этих мягких французских булок, да выпей же чаю.'; |
| echo $str = preg_replace('/[^a-zа-яё]/ui', '', $text); |
| echo mb_strlen($str); |
Количество цифр в строке
| $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; |
| $str = preg_replace('/[^0-9]/ui', '', $text); |
| echo mb_strlen($str); |
Количество знаков препинания
| $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; |
| $str = preg_replace("/[^[:punct:]]/", '', $text); |
| echo mb_strlen($str); |
Количество пробелов в строке
Или количество вхождений любого другого символа или подстроки.
| $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю.'; |
| echo substr_count($text, ' '); |
Количество пробелов в начале строки:
| $text = ' Съешь ещё - этих мягких французских булок, да выпей же чаю.'; |
| echo mb_strlen($text) - mb_strlen(ltrim($text, ' ')); |
Количество пробелов в конце строки:
| $text = 'Съешь ещё - этих мягких французских булок, да выпей же чаю. '; |
| echo mb_strlen($text) - mb_strlen(rtrim($text, ' ')); |