Как в PHP узнать длину строки
Оглавление:
Что такое строка в PHPФункция strlen
Пример использования функции
Нюансы в работе функции strlen
В PHP узнают размер строки для того, чтобы настроить текстовые поля для пользовательского ввода, и определить размер строки в байтах. Для этой задачи используют несколько методов, а самым популярным стала функция strlen. Однако она работает не так очевидно, как кажется, что важно учитывать.
В этой статье расскажем, как определить длину строки в PHP.
Что такое строка в PHP
Это объект типа string, т. е. набор символов или байтов. Система языка программирования включает в себя 256 разных знаков и не поддерживает Unicode — международный стандарт кодирования. Это отличает РНР от других языков программирования, например, Python.
Кроме того, в 32-битных системах и в ранних версиях языка программирования ограничен максимальный размер. Объект не может быть больше 2 ГБ (2147483647 байт).
Функция strlen
Функция strlen() возвращает пользователю длину указанной строки. С ее помощью можно быстро определить длину в стандартной однобайтовой системе. Синтаксис:
strlen(string $string) : int
В скобках указывается только один параметр — сам объект, которую нужно измерить. В нашем случае это $string. А перед ним указан тип объекта. Эта функция удобна для подсчета знаков, если один символ равен байту. Программист получает конкретное число.
Однако при работе с многобайтными строками UTF-8 на выходе пользователь увидит, что количество знаков в объекте и результат не совпадают. Новички часто считают, что софт просто выдает неправильный ответ. В действительно же это связано с более сложной знаковой системой.
Пример:
// В кодировке UTF-8
$str = 'Я учусь в OTUS';
echo strlen($str); // 25
?>
Во фрагменте кода выше видно, что при 11 символах в строке почему-то результат составил 25. Чтобы посчитать символы и получить именно количество знаков, а не байтов, программисты используют следующую функцию:
mb_strlen(string $string , string|null $encoding = null) : int
Ее особенность в том, что дополнительно определяется кодировка символов и, если вес знака больше одного байта, то на выходе все равно получается единица. Это универсальная функция, которая одинаково работает со всеми байтовыми системами измерения.
Стоит отдельно отметить, что если на проверку отправить пустую строку, в консоли появится результат 0, а не ошибка.
Пример использования функции
В первом примере показан пример использования функции в случае с однобайтовой системой символов. После пересчета 6 знаков система выдала результат 6, т. е. все просто. Также вы можете увидеть, что необязательно в скобках указывать сам объект. Можно вписать переменную, поэтому функция подходит для проверки пользовательского ввода и других непостоянных объектов.
<?php
$str = ’abcdef’;
echo strlen($str); // 6
Если строка состоит из знаков в кодировке UTF-8, то используют параметр $encoding: mixed mb_strlen (string $str [, string $encoding = mb_internal_encoding() ] ). В результате программист узнает именно длину строки, а не количество байтов.
Нюансы в работе функции strlen
Перед созданием strlen() нужно четко определить, что программа должна узнать — количество байт или символов. Это поможет настроить работу этого метода.
Новички часто забывают про это, из-за чего веб-приложения, например, требуют ввести не 6 знаков в строку, а 6 байтов. В результате программа работает не так, как было задумано. Или сайт с функцией подсчета символов всегда выдает пользователю не те ответы из-за несоответствия количества байтов и символов.
Также нужно учитывать, что strlen() не работает с массивами. На выходе вы получите null и предупреждение E_WARNING.
-
Создавать проекты на PHP
-
Использовать лучшие инструменты
-
Быстро реализовывать свою идею
-
Защита данных
-
Работать с базами данных