在PHP中缩短/截断UTF8字符串
我需要一个好的快速功能,缩短字符串到一个设置的长度与UTF8的支持。在末尾添加尾随“…”是一个加号。有人能帮忙吗?假设安装了在PHP中缩短/截断UTF8字符串,php,string,utf-8,truncate,Php,String,Utf 8,Truncate,我需要一个好的快速功能,缩短字符串到一个设置的长度与UTF8的支持。在末尾添加尾随“…”是一个加号。有人能帮忙吗?假设安装了mb.*功能 function truncate($str, $length, $append = '…') { $strLength = mb_strlen($str); if ($strLength <= $length) { return $str; } return mb_substr($str, 0, $length) . $a
mb.*
功能
function truncate($str, $length, $append = '…') {
$strLength = mb_strlen($str);
if ($strLength <= $length) {
return $str;
}
return mb_substr($str, 0, $length) . $append;
}
如果第三个参数为
TRUE
,它将保留所有字母字符,直到第一个非字母字符。我想您需要截断文本,因此这可能会有所帮助:
if (!function_exists('truncate_string')) {
function truncate_string($string, $max_length) {
if (mb_strlen($string, 'UTF-8') > $max_length){
$string = mb_substr($string, 0, $max_length, 'UTF-8');
$pos = mb_strrpos($string, ' ', false, 'UTF-8');
if($pos === false) {
return mb_substr($string, 0, $max_length, 'UTF-8').'…';
}
return mb_substr($string, 0, $pos, 'UTF-8').'…';
}else{
return $string;
}
}
}
如果(!function_存在('truncate_string')){
函数truncate_string($string,$max_length){
如果(mb_strlen($string,'UTF-8')>$max_长度){
$string=mb_substr($string,0,$max_length,'UTF-8');
$pos=mbstrrpos($string',false,'UTF-8');
如果($pos==false){
返回mb_substr($string,0,$max_length,'UTF-8')。“…”;
}
返回mb_substr($string,0,$pos,'UTF-8')。“…”;
}否则{
返回$string;
}
}
}
这类似于刚刚发布的@alex,但它不会打断文字。试试这个:
$length=100;
如果(mb_strlen($text,“utf-8”)>$length){
$last_space=mb_strrpos(mb_substr($text,0,$length,“utf-8”),“”,“utf-8”);
$text=mb_substr($text,0,$last_空格,“utf-8”)。“…”;}
干杯…出于某种原因,这并没有缩短任何内容。您不想在单词边界上打破这一点吗?感谢您保留单词功能 if (!function_exists('truncate_string')) { function truncate_string($string, $max_length) { if (mb_strlen($string, 'UTF-8') > $max_length){ $string = mb_substr($string, 0, $max_length, 'UTF-8'); $pos = mb_strrpos($string, ' ', false, 'UTF-8'); if($pos === false) { return mb_substr($string, 0, $max_length, 'UTF-8').'…'; } return mb_substr($string, 0, $pos, 'UTF-8').'…'; }else{ return $string; } } }