Обрезание строк с помощью PHP

Для получения строки определённой длины понадобится воспользоваться встроенными средствами PHP, применимыми в различных случаях. Например, рассмотренный в статье функционал подойдёт для привязки к какой-либо форме, заполняемой пользователем и дополнительно имеющей установленный средствами HTML или JavaScript лимит по числу символов, срабатывающий на стороне пользователя.

Его не всегда достаточно, поэтому крайне важно уделить внимание серверной проверке через strlen();либо обрезке с помощью substr();,рассмотренной в этой статье.

Описание функции

Возможность возврата подстрок определённой длины без применения сторонних решений введена в PHP 4 и присутствует в более современных спецификациях, при этом синтаксис не изменился с момента своего появления и имеет крайне простую форму:

substr($string, $offset, $length);

В восьмой версии языка отмечены два ярких изменения. Вместо false, возникающего, к примеру, при невозможности прочитать строку,substr(); стала возвращать пустое значение. Также в качестве длины стало приниматься null.

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

Вышерассмотренный substr();работает не по количеству символов, а по числу байтов, закладываемых в них. Это вызывает проблемы при пользовании алфавитами, отличающимися от английского, однако есть решение – mb_substr();. Он учитывает число знаков и записывается следующим образом:

mb_substr($string, $start, $length, $encoding);

С появлением PHP 8 задавать кодировку стало необязательно.

Альтернативный вариант

Также существует функция mb_strcut();, используемая, когда важна и поддержка кириллицы, и отсчёт по количеству байтов. Она применяется редко, но критична для случаев, когда необходимо сохранить порядок размещения байтов в строке. Синтаксис представлен так:

mb_strcut($string, $start, $length, $encoding);

Примеры использования

Простое обрезание на латинице

Самый простой код с применением substr();выглядит так и актуален только для английского языка:

<?
$string = «Sphinx of black quartz judge my vow»;
$short = substr($string, 0, 6);
print $string.»<br>».$short;
?>

В результате выведутся обычная строка и слово «Sphinx».

Обрезание с конца

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

<?
$string = «Sphinx of black quartz judge my vow»;
$short = substr($string, 0, -13);
print $string.»<br>».$short;
?>

Итог: вывод оригинала и фразы «Sphinx of blackquartz».

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

<?
$string = «В чащах юга жил-был цитрус… — да, но фальшивый экземпляръ!»;
$short = mb_substr($string, 0, 29, «UTF-8″);
print $string.»<br>».$short;
?>

На экране появится сперва обычный текст, потом – надпись «В чащах юга жил-был цитрус…».

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

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