如何在PHP中截断UTF8字符串?

2022-08-30 22:03:35

我的PHP代码中有一些字符串,如果它们太长,需要截断。

例如,如果文本如下所示:

嗨,我想告诉你这是多么美妙。

它将用以下内容替换它:

嗨,我想...

为此,我做了一个简单的.问题是,在 UTF8 中,某些字符实际上是两个字符长。我在中间剪切字符时遇到了一些问题:例如,当我尝试在数据库中插入修改后的字符串时,它会崩溃。substr

这是我当前的函数:

static function short($string, $max = 255){
   if(strlen($string) >= $max){
       $string = substr($string, 0, $max - 5).'...';
   } return $string;
}

有人会知道一种方法使此函数甚至适用于UTF8字符吗?


答案 1

你需要的一切都是mb_strimwidth() : http://php.net/manual/en/function.mb-strimwidth.php

例:

mb_strimwidth('Hi, I would like to tell you how wonderful this is.',0,15,'...','utf-8');

答案 2

尝试使用 mb_substr()

static function short($string, $max = 255){
   if(mb_strlen($string, 'utf-8') >= $max){
       $string = mb_substr($string, 0, $max - 5, 'utf-8').'...';
   } return $string;
}

推荐