xtrimsky xtrimsky - 16 days ago 5
PHP Question

How to truncate an UTF8 string in PHP?

I have some strings in my PHP code that need to be truncated if they are too long.

For example if a text is something like this:


Hi, I would like to tell you how wonderful this is.


It would replace it with this:


Hi, I would like to ...


For that I've done a simple
substr
. The problem is that in UTF8 some characters are actually two characters long. And I've had some problems with a character being cut in the middle: For example, when I try to insert the modified string in the database, it crashes.

Here is my current function:

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


Would someone know a way to make this function work even for UTF8 characters?

Answer

Everything you need is mb_strimwidth() : http://php.net/manual/en/function.mb-strimwidth.php

Example:

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