truncate_utf8
includes/unicode.inc, строка 210
- Версии
- 5 – 6
truncate_utf8($string, $len, $wordsafe = FALSE, $dots = FALSE)
Безопасно обрезает кодированную в UTF-8 строку до указанного количества байт.
Если верхняя граница находится внутри последовательности символов UTF-8, она проходит строку в обратном направлении, пока не встретит начала последовательности байт.
Эту функцию следует использовать всегда, когда вы хотите обрезать строку до неизвестной длины. С другой стороны, если вы уверенный, что вы разделяете строку на границе символа (например после использования функции strpos()
или схожих с ней), вы можете спокойно использовать вместо неё функцию substr()
.
Параметры
$string
Усекаемая строка.
$len
Верхний предел длины возвращаемой строки.
$wordsafe
Указывает, обрезать ли строку по последнему пробелу до указанной верхней границы. По умолчанию FALSE
.
Возвращаемое значение
Усеченная строка.
Код
<?php
function truncate_utf8($string, $len, $wordsafe = FALSE, $dots = FALSE) {
$slen = strlen($string);
if ($slen <= $len) {
return $string;
}
if ($wordsafe) {
$end = $len;
while (($string[--$len] != ' ') && ($len > 0)) {};
if ($len == 0) {
$len = $end;
}
}
if ((ord($string[$len]) < 0x80) || (ord($string[$len]) >= 0xC0)) {
return substr($string, 0, $len) . ($dots ? ' ...' : '');
}
while (--$len >= 0 && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0) {};
return substr($string, 0, $len) . ($dots ? ' ...' : '');
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии