Ограничить длину строки в PHP

Ограничить длину строки в PHP

Строка в PHP реализована в виде массива байт и целого числа, содержащего длину буфера. В определении кроется подводный камень, на который натыкаются многие начинающие программисты.

Кодировка UTF-8 в каждом символе имеет 2 байта, в то время как Windows 1251 которая к сожалению всё ещё пользуются популярностью каждый символ равен 1 байту. По этому return strlen(‘A’); в кодировке UTF-8 вернет 2, хотя на поверку длинна 1 символ. Для того, чтобы избежать подобной проблемы, надо явно указать с какой кодировкой идет работа return mb_strlen(‘A’, ‘UTF-8’);.

Для того, чтобы ограничить длину кириллической строки, используется функция mb_substr() или substr()если речь идет только о латинице и числах. Функция mb_substr(string $str , int $start [, int $length [, string $encoding ]]) — если работа идет со строками в конкретно указанной кодировке.

echo mb_substr('абвгедж', 1, ‘UTF-8’); // выведет на страницу бвгедж
echo mb_substr('абвгедж', 1, 3, ‘UTF-8’); // выведет на страницу бвг
echo mb_substr('абвгедж', 0, 4, ‘UTF-8’); // выведет на страницу абвг
echo mb_substr('абвгедж', 0, 8, ‘UTF-8’); // выведет на страницу абвгедж
echo mb_substr('абвгедж', -1, 1, ‘UTF-8’); // выведет на страницу ж

Данным способом можно легко ограничить длину строки, главное помните о том, в какой кодировке работаете, чтобы потом не искать ошибки в уже работающих приложениях.

| | Ограничить длину строки в PHP | Строка в PHP реализована в виде массива байт и целого числа, содержащего длину буфера. В определении кроется подводный камень, на который натыкаются м |

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>