Обрезание строки до заданной длины с обоих краев в PHP
Функция truncateBoth()
В PHP нет отдельной функции для данной задачи. Такой функционал можно реализовать с помощью функции получения подстроки mb_substr().
Исходный код
class StringExtension {
/**
* @param string $string
* @param int $length
* @param string $encoding
* @return string
*/
public static function truncateBoth($string, $length, $encoding = null) {
$string = (string) $string;
$length = (int) $length;
$encoding = ($encoding === null) ? mb_internal_encoding() : (string) $encoding;
if ($length <= 0) {
$string = '';
} elseif (($truncateLength = mb_strlen($string, $encoding) - $length) > 0) {
$string = mb_substr($string, floor($truncateLength / 2), $length, $encoding);
}
return $string;
}
}
Аргументы
- $string — обрезаемая строка;
- $length — нужная длина строки;
- $encoding — кодировка.
Возвращаемое значение
Возвращает строку string, обрезанную до длины length с обоих краев.
Особенности
- Безопасна для многобайтных строк.
- Важно помнить, что при вычислении обрезаемых подстрок в приоритете правый край. Т.е. если строка обрезается на 3 символа, то с правого края будет срезано 2 символа, а с левого — 1.