Web-дизайн на основе шаблонов
Уникальный web-дизайн
Наши работы
Контакты
Сайт-визитка
Сайт-стандарт
VIP-сайт
Сколько стоит сайт?
Заказать сайт
Рекламные кампании
Продвижение сайтов
Продвижение "Вконтакте"
Сопровождение сайтов
Размещение Ваших сайтов
Регистрация доменных имен
Статьи
LiveZilla Live Chat Software

Он-лайн консультация по вопросам сопровождения сайта в Ульяновске: ICQ# 179104682

Все статьи > Заметки разработчика > PHP обрезка строки с кириллицей

Как обрезать кириллическую строку с помощью PHP

Дата размещения статьи: 01.06.2014

PHP обрезка строки с кириллицей

Создание сайта в Ульяновске с серьезным функционалом и взаимодействием с базами данных очень часто требует, чтобы определенная строка не превышала определенного заданного объема. Это может понадобиться, например, для ограничения количества символов, передающихся серверу баз данных с помощью поля input, для отображения на странице сайта только части строки (например, при формировании равных по высоте анонсов новостей в списке) и для многих других задач.

Первое, на что натыкаются начинающие программисты – PHP функция substr. Она действительно используется для обрезки строк и синтаксис ее несложен substr(string, int start [, int length] ), где int start – начальный символ с которого нужно начать резать строку, а необязательный параметр int length – количество символов, которые нужно отрезать. Однако, для неопытного программиста она может показаться странной, если он пытается использовать ее для PHP обрезки строки с кириллицей. В результате работы substr с кириллической строкой на конце обрезанной строки может появиться знак вопроса, или знак вопроса в ромбике, а общее число вырезанных символов почему-то в два раза меньше того, что было задано в параметре int length. Почему же так происходит?

Дело в том русскоязычные символы в UTF-8 имеют размер в 2 байта, а латинские символы всего 1 байт. PHP функция substr режет строку именно по байтам, а не по символам. Если строка состоит из латинских символов, то ничего странного не происходит, так как число символов совпадает с числом байтов. А при работе с кириллицей, где каждый символ занимает 2 байта, параметр int length запросто может попасть на «середину» символа, и в результате на конце вырезанной строки при выводе мы увидим тот злополучный знак вопроса в ромбике.

Как правильно вырезать часть строки с кириллицей?

Решение этой проблемы на самом деле очень простое. Для правильной PHP обрезки строки, содержащей кириллические символы нужно использовать PHP функцию iconv_substr

Синтаксис функции несложный:

iconv_substr ( string, int start [, int length [, charset]] )

Пример для обрезки русскоязычной строки до 80 символов с UTF-8 кодировкой с помощью iconv_substr:

$new_string = iconv_substr ($string, 0 , 80 , “UTF-8” );

Цифра ноль в примере означает что отсчет 80 символов начинается с самого начала строки.

Поделиться с друзьями:
Контакты:
г.Ульяновск, Ефремова 29, офис 406
тел. +7 (8422) 99-67-67 (Ульяновск)
e-mail: info@webstudio73.com