/ 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
