用重音切割一个字符串

den*_*xic 5 php string character-encoding

可能重复:
将多字节字符串截断为n个字符

你好,

我正在用法语开发一个网站,我创建了一个在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;
    }
}
Run Code Online (Sandbox Code Playgroud)

$str = "C'est une soirée privé ce soir";
echo eat_trim3($str, 15 , '...' );   
// GIVES ME             C'est une soir?...
Run Code Online (Sandbox Code Playgroud)

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

任何帮助赞赏.

谢谢.

Luk*_*ský 19

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