ale*_*lex 11
假设mb_*安装了功能.
function truncate($str, $length, $append = '…') {
$strLength = mb_strlen($str);
if ($strLength <= $length) {
return $str;
}
return mb_substr($str, 0, $length) . $append;
}
Run Code Online (Sandbox Code Playgroud)
请记住,这将添加一个字符(省略号).如果你想要$append包含在被截断的长度中,只需减去mb_strlen($append)你所砍断的字符串的长度.
显然,这也会在文字中间切碎.
这是一个可以选择保留整个单词的版本......
function truncate($str, $length, $breakWords = TRUE, $append = '…') {
$strLength = mb_strlen($str);
if ($strLength <= $length) {
return $str;
}
if ( ! $breakWords) {
while ($length < $strLength AND preg_match('/^\pL$/', mb_substr($str, $length, 1))) {
$length++;
}
}
return mb_substr($str, 0, $length) . $append;
}
Run Code Online (Sandbox Code Playgroud)
如果第三个参数是,它将保留所有字母字符,直到第一个非字母字符TRUE.