我的问题有点简单。对于我的网站,我编写了一个函数来获取文本的第一个字符以在预览中显示这些字符。这一直有效,直到最后一个字符是像 ü ä ö 这样的“元音变音”。这是因为它将这些字符计算为双倍(2 个字节)吗?这是一个例子:function getFirstChars($str, $count){ $str = trim($str); $str = substr($str, 0, $count); return $str;}$str = 'Nach Schaffenspausen, Wiedervereinigungen und leider auch einem Schicksalsschlag, kam die 1995 gegründete Band';echo getFirstChars($str, 100);当我这样做时,我得到一个?在最后。所以我试图改变我的功能,现在它可以工作了,但我不知道这是否是一个好的解决方案:function getFirstChars($str, $count){ $str = trim($str); $lastChar = substr($str, 0, $count); if(mb_detect_encoding($lastChar[$count-1]) == 'UTF-8'){ $str = substr($str, 0, $count+1); }else{ $str = substr($str, 0, $count); } return $str;}非常感谢!
2 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
只有启用并使用了扩展程序,您的getFirstChars功能才会起作用。对于多字节安全子字符串,我们可以使用mb_substr函数mbstringmb_substr
function getFirstChars($str, $count){
if(!function_exists('mb_substr')){
die('enable mbstring extension'); // you may throw an exception too.
}
$str = trim($str);
$str = mb_substr($str, 0, $count);
return $str;
}
- 2 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消
