Обрезание строк с помощью 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;
?>
На экране появится сперва обычный текст, потом – надпись «В чащах юга жил-был цитрус…».