Какая функция возвращает длину строки в php?
Для получения длины строки в PHP используется функция strlen() .
Возвращает длину строки string.
$str = 'abcdefghi'; echo $strlen($str); // => 9
Как узнать длину строки в PHP — strlen, mb_strlen

В сегодняшней статье мы поговорим о том как узнать длину строки в PHP.
Каждый раз когда мы работаем со строковыми переменными или с другими объектами в php которые имеют отношения до строки, то нам очень часто нужно узнавать длину этой самой строки для дальнейшей её обратно. Задача кажется очень простой, но есть один очень важный нюанс, это кодировка. Функции в PHP которые подсчитывают размер строки, могут показывать разные значения, а значения длины будет зависеть от того какаю кодировку вы используете у себя на сайте.
В PHP есть несколько встроенных функций, которые определяю размер строки, и мы сегодня их рассмотрим.
Первую функцию которую мы рассмотрим называться strlen. Функция strlen работает очень просто, она принимает всего один единственным и обязательным параметр, это строка, и возвращает длину строки.
php> strlen(‘Hellow World’);

В результате функция посчитала нам её длину и вернула результат. Как я и говорил при работе с этой функцией есть один, но очень важный нюанс.
В следующей примере я напишу текст тот же самый, но только на русском языке.
php> strlen(‘Привет мир’);

В результате мы получаем странный результат. По идеи мы должны получить число 10, а получаем 19. Оказывается что функция strlen подсчитывает не привычное нам количество символов в строке, а подсчитывает количество байтов в строке, один символ в юникод это 2 байта, а пробел 1 байт.
Так что при работе с этой функцией этот нюанс нужно учитывать.
Следующую функцию в примере мы будем использовать под названием mb_strlen. Функция mb_strlen принимает два параметра, первый обязательный параметр это обычная строка, а второй параметр не обязательный это кодировка. Разница между функциями strlen и mb_strlen в том что подсчет символов будет одинаковым как на английском, так и на русском языке. Даже если символ занимает несколько байт, то будет посчитан, как один байт.
php> mb_strlen(«Hellow World»);
php> mb_strlen(«Привет мир»);

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.
Как узнать длину строки php
На этом шаге мы рассмотрим функцию, вычисляющую длину строки .
На практике очень часто требуется узнать длину строки. Для этого в РНР имеется специальная функция strlen() , принимающая в качестве входных параметров строку и возвращающая ее длину виде целого числа.
Ее общий вид следующий:
Рис.1. Общий вид функции strlen()
// длина строки for ($i=0; $i// посимвольный вывод строки "; > ?>
Текст этой программы можно взять здесь.
Результат выполнения этой программы смотрите на рисунке 2.
Рис.2. Пример посимвольного вывода строки
Первое, что бросается в глаза — это присутствие квадратных скобок, так, как они использовались при работе с массивами. Здесь нет ничего странного, так как в РНР , как и во многих других языках программирования, строку можно воспринимать как массив символов, проиндексированный целыми числами, начиная с нуля.
Вернемся к нашему примеру. Сначала мы инициализируем строку, затем с помощью функции strlen() получаем ее длину в виде целочисленного значения, которое запишем в переменную $len . Далее создаем простой цикл for на $len итераций. У многих начинающих программистов часто возникает соблазн не использовать дополнительную переменную для хранения длины строки. Действительно, функцию strlen() можно записать прямо в определении цикла for . Например:
for ($i=0;$i.
Тем не менее, категорически не рекомендуется так делать. Во-первых, этот код работает медленнее, чем с использованием дополнительной переменной, так как приходится постоянно вызывать функцию strlen() . Во-вторых, длина строки может меняться в теле цикла, соответственно, поменяется количество итераций, что может повлиять на ход программы.
В теле цикла нашей программы мы выводим один символ и выполняем перевод строки. Еще раз хочется обратить ваше внимание, что нумерация символов происходит с нуля.
На следующем шаге мы рассмотрим функции, позволяющие сравнивать строки .
iconv_strlen
В отличие от strlen() , iconv_strlen() учитывает кодировку строки. Длина string не обязательно будет соответствовать количеству байт в ней, так как в различных кодировках различные символы кодируются различным количеством байт, например, юникод может быть и двух-, и четырёхбайтным.
Список параметров
Если параметр encoding опущен, предполагается, что кодировка строки string эквивалентна значению iconv.internal_encoding.
Возвращаемые значения
Возвращает количество символов в string как целое число или false в случае возникновения ошибки при кодировании.
Список изменений
| Версия | Описание |
|---|---|
| 8.0.0 | encoding теперь допускает значение null. |
Смотрите также
- grapheme_strlen() — Получает длину строки в единицах графемы
- mb_strlen() — Получает длину строки
- strlen() — Возвращает длину строки
User Contributed Notes 2 notes
18 years ago
If iconv_strlen is passed a UTF-8 string containing badly formed sequences, it will return FALSE. This is in contrast to mb_strlen of the behaviour of utf8_decode, which strip out any bad sequences;
# UTF-8 string containing bad sequence: \xe9
$str = «I?t?rn?ti?n\xe9?liz?ti?n» ;
print «mb_strlen: » . mb_strlen ( $str , ‘UTF-8’ ). «\n» ;
print «strlen/utf8_decode: » . strlen ( utf8_decode ( $str )). «\n» ;
print «iconv_strlen: » . iconv_strlen ( $str , ‘UTF-8’ ). «\n» ;
?>
Displays;
mb_strlen: 20
strlen/utf8_decode: 20
iconv_strlen:
As such it is being «stricter» than mb_strlen and it may mean you need to check for invalid sequences first. A quick way to check is to exploit the behaviour of the PCRE extension (see notes on pattern modifiers);
if ( preg_match ( ‘/^./us’ , $str , $ar ) != 1 ) die( «string contains invalid UTF-8» );
>
?>
A slower but stricter check (regex) can be found at: http://www.w3.org/International/questions/qa-forms-utf-8
Similiar applies to iconv_substr, iconv_strpos and iconv_strrpos
3 years ago
Notice there is a disconnect:
>If charset`parameter is omitted, str is assumed to be encoded in iconv.internal_encoding.
But clicking on the iconv.internal_encoding link (https://www.php.net/manual/en/iconv.configuration.php), the docs indicate that iconv.internal_encoding is deprecated since 5.6.
- Функции iconv
- iconv_get_encoding
- iconv_mime_decode_headers
- iconv_mime_decode
- iconv_mime_encode
- iconv_set_encoding
- iconv_strlen
- iconv_strpos
- iconv_strrpos
- iconv_substr
- iconv
- ob_iconv_handler
- Copyright © 2001-2024 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy