我的問題有點簡單。對于我的網站,我編寫了一個函數來獲取文本的第一個字符以在預覽中顯示這些字符。這一直有效,直到最后一個字符是像 ü ? ? 這樣的“元音變音”。這是因為它將這些字符計算為雙倍(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 關注
- 172 瀏覽
添加回答
舉報
0/150
提交
取消
