在PHP中缩短/截断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

我需要一个好的快速功能,缩短字符串到一个设置的长度与UTF8的支持。在末尾添加尾随“…”是一个加号。有人能帮忙吗?

假设安装了
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; } } }