Loftschool школа онлайн обучения IT профессиям
Профессии
  • Веб-разработчик
  • Frontend с нуля
  • Frontend разработчик
  • Backend разработчик
  • Full Stack разработчик
  • UX/UI Дизайнер
  • Интернет-маркетолог
  • Android-разработчик
Курсы
            • Веб-тестирование
            • Основы вёрстки
            • Веб для начинающих
            • JavaScript
            • Vue.js
            • React.js
            • Node.js
            • PHP
            • UX/UI-дизайн: базовый
            • UX/UI-дизайн: PRO
            • Основы Python
            • Python: машинное обучение
            • Product Management
            • Контекстная реклама
            • SMM
            • SEO для всех
            • Android: базовый
            • Android: продвинутый

          Скидка на все

          курсы и профессии

          -46%

          ВЕСЬ

          ИЮНЬ

          До конца акции:
          24
          Дней
          07
          Часов
          31
          Минут
          • Главная
          • Блог
          • Статьи
          • Как в PHP узнать длину строки
          Полезный блог
          Евгения Торжкова
          Frontend-разработчик
          Опубликовано 18.05.2023 16:00

          Как в 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
          За 6 недель вы освоите работу с главными инструментами современного backend разработчика и получите 3 проекта в портфолио.
          • Создавать проекты на PHP
          • Использовать лучшие инструменты
          • Быстро реализовывать свою идею
          • Защита данных
          • Работать с базами данных
          Записаться

          Поделиться

          Не сиди

          без дела

          учись

          онлайн!

          Содержание

          • Что такое строка в PHP
            • Функция strlen
              • Пример использования функции
                • Нюансы в работе функции strlen
                  • © 2012 - 2023 LOFT

                    Школа онлайн образования

                  • © 2012 - 2023 LOFT

                    Школа онлайн образования

                    • +7 (800) 600 09 54
                    • +7 (812) 339 22 01
                    • [email protected]
                  • Полезная рассылка

                    Подпишись, чтобы быть в курсе наших новостей, акций и скидок.

                  • Полезное
                    • Карта курсов
                    • B2B
                    • Работодателям
                    • Партнерская программа
                    • Вакансии
                    • Стать автором
                    • Подарочные сертификаты
                    • Вебинары
                    • Блог
                    • FAQ
                  • Информация
                    • О нас
                    • Отзывы
                    • Сведения об образовательной организации
                    • Правовая информация
                    • Способы оплаты
                    • Контакты
                    Безопасная передача данных