/ Published in: PHP
                    
                                        
在UTF-8的編碼下縮減å—串並é¿å…䏿–‡å—串最後一個å—變亂碼
                
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
//æ“·å–å—串å‰å¹¾å€‹å—並é¿å…截掉åŠå€‹ä¸æ–‡å—,$strlenè¦æ“·å–çš„å—串長度(ä»¥è‹±æ–‡å—æ¯æ•¸è¨ˆç®—ï¼Œä¸æ–‡å—éœ€ç®—äºŒå€‹å—æ•¸)
//æ¤è™•直接傳入從資料庫讀出之UTF-8編碼å—串
function CuttingStr($str, $strlen) {
//把' '先轉æˆç©ºç™½
$output_str_len = 0; //累計è¦è¼¸å‡ºçš„æ“·å–å—串長度
$output_str = ''; //è¦è¼¸å‡ºçš„æ“·å–å—串
//é€ä¸€è®€å‡ºåŽŸå§‹å—串æ¯ä¸€å€‹å—å…ƒ
//æ“·å–å—æ•¸å·²é”åˆ°è¦æ“·å–çš„å—串長度,跳出回圈
if($output_str_len >= $strlen){
break;
}
//å–å¾—ç›®å‰å—元的ASCII碼
if($str_bit < 128) {
//ASCIIç¢¼å°æ–¼ 128 為英文或數å—å—符
$output_str_len += 1; //累計è¦è¼¸å‡ºçš„æ“·å–å—ä¸²é•·åº¦ï¼Œè‹±æ–‡å—æ¯ç®—䏀個嗿•¸
}elseif($str_bit > 191 && $str_bit < 224) {
//第一å—ç¯€ç‚ºè½æ–¼192~223çš„utf8çš„ä¸æ–‡å—(è¡¨ç¤ºè©²ä¸æ–‡ç‚ºç”±2個å—節所組æˆutf8䏿–‡å—)
$output_str_len += 2; //累計è¦è¼¸å‡ºçš„æ“·å–å—ä¸²é•·åº¦ï¼Œä¸æ–‡å—éœ€ç®—äºŒå€‹å—æ•¸
$i++;
}elseif($str_bit > 223 && $str_bit < 240) {
//第一å—ç¯€ç‚ºè½æ–¼223~239çš„utf8çš„ä¸æ–‡å—(è¡¨ç¤ºè©²ä¸æ–‡ç‚ºç”±3個å—節所組æˆçš„utf8䏿–‡å—)
$output_str_len += 2; //累計è¦è¼¸å‡ºçš„æ“·å–å—ä¸²é•·åº¦ï¼Œä¸æ–‡å—éœ€ç®—äºŒå€‹å—æ•¸
$i+=2;
}elseif($str_bit > 239 && $str_bit < 248) {
//第一å—ç¯€ç‚ºè½æ–¼240~247çš„utf8çš„ä¸æ–‡å—(è¡¨ç¤ºè©²ä¸æ–‡ç‚ºç”±4個å—節所組æˆçš„utf8䏿–‡å—)
$output_str_len += 2; //累計è¦è¼¸å‡ºçš„æ“·å–å—ä¸²é•·åº¦ï¼Œä¸æ–‡å—éœ€ç®—äºŒå€‹å—æ•¸
$i+=3;
}
}
//è¦è¼¸å‡ºçš„æ“·å–å—串為空白時,輸出原始å—串
return ($output_str == '') ? $str : $output_str;
}
Comments
 Subscribe to comments
                    Subscribe to comments
                
                