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