用重音切割一个字符串

时间:2011-05-15 11:07:03

标签: php string character-encoding

  

可能重复:
  Truncate a multibyte String to n chars

您好,

我正在用法语开发一个网站,我创建了一个在X个字符后剪切字符串的函数。它工作得很好,但是当最后一个字符有重音时,它有(?)而不是字符。

这是我的功能

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;
    }
}

实施例

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

页面的其余部分完美地回应了页面,我甚至可以在没有剪切的情况下回显相同的字符串,并且效果很好。

任何帮助表示感谢。

感谢。

1 个答案:

答案 0 :(得分:17)

使用mb_substrmb_strlen功能。它不起作用,因为你使用UTF-8,它有多字节字符,你在中间切。