繁体   English   中英

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

[英]How to truncate an UTF8 string in PHP?

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

例如,如果文本是这样的:

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

它将取代它:

嗨,我想......

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

这是我目前的功能:

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

有人知道一种方法,即使对于UTF8字符,这个功能也能正常工作吗?

你需要的一切都是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');

尝试使用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;
}

您可以使用mb_substr方法。 看到这个完整的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM