9

Possible Duplicate:
Truncate a multibyte String to n chars

Hello,

I'm developing a site in French and I created a function that cuts string after X number of characters. It works great, but when the last character has an accent, it has the (?) instead of the character.

Here is my function

function neat_trim3($str, $n, $delim='...') {
    $len = strlen($str);
    if ($len > $n) {
        $tocut = $len-$n;
        $output = substr($str,0,-$tocut);
        return $len.' - '.$output.$delim;
    }
    else {
        return $str;
    }
}

Example

$str = "C'est une soirée privé ce soir";
echo eat_trim3($str, 15 , '...' );   
// GIVES ME             C'est une soir�...

The rest of the page echos the page perfectly, I can even echo the same string without the cut and it works great.

Any help appreciated.

Thanks.

Community
  • 1
  • 1
denislexic
  • 10,786
  • 23
  • 84
  • 128
  • look there: http://stackoverflow.com/questions/6001690/php-count-characters-and-deleted-what-is-more-than-140-characters/6001742#6001742 – OZ_ May 15 '11 at 11:11

1 Answers1

25

Use the mb_substr and mb_strlen functions. It doesn't work because you are using UTF-8, which has multi-byte characters and you cut the in the middle.

Lukáš Lalinský
  • 40,587
  • 6
  • 104
  • 126