Домой / HELP / Как обрезать кириллическую строку с помощью PHP или функция iconv_substr

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

Первое, на что натыкаются начинающие программисты – 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

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

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

Более детально читайте на http://php.su/

[snap url=»http://www.php.su/functions/?date» alt=»php.su» w=»300″ h=»250″]

 

Про Александр

Здравствуйте, меня зовут Александр Мороз. Профессионально занимаюсь созданием сайтов . Выражаюсь на диалектах PHP, SQL, JavaScript, HTML, CSS, XML, jQuery. Иногда и матом в особо сложных случаях :)

Проверьте также

Настраиваем файл robots.txt для WordPress

В этой статье пример оптимального, на мой взгляд, кода для файла robots.txt под WordPress, который …

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

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