Revision: 6696
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 8, 2008 05:59 by multani
Initial Code
//æ“·å–å—串å‰å¹¾å€‹å—並é¿å…截掉åŠå€‹ä¸æ–‡å—,$strlenè¦æ“·å–çš„å—串長度(以英文å—æ¯æ•¸è¨ˆç®—,ä¸æ–‡å—需算二個å—數) //æ¤è™•ç›´æŽ¥å‚³å…¥å¾žè³‡æ–™åº«è®€å‡ºä¹‹UTF-8編碼å—串 function CuttingStr($str, $strlen) { //把' '先轉æˆç©ºç™½ $str = str_replace(' ', ' ', $str); $output_str_len = 0; //累計è¦è¼¸å‡ºçš„æ“·å–å—串長度 $output_str = ''; //è¦è¼¸å‡ºçš„æ“·å–å—串 //é€ä¸€è®€å‡ºåŽŸå§‹å—串æ¯ä¸€å€‹å—å…ƒ for($i=0; $i<strlen($str);$i++){ //æ“·å–å—數已é”到è¦æ“·å–çš„å—串長度,跳出回圈 if($output_str_len >= $strlen){ break; } //å–å¾—ç›®å‰å—元的ASCII碼 $str_bit = ord(substr($str, $i, 1)); if($str_bit < 128) { //ASCII碼å°æ–¼ 128 為英文或數å—å—符 $output_str_len += 1; //累計è¦è¼¸å‡ºçš„æ“·å–å—串長度,英文å—æ¯ç®—一個å—數 $output_str .= substr($str, $i, 1); //è¦è¼¸å‡ºçš„æ“·å–å—串 }elseif($str_bit > 191 && $str_bit < 224) { //第一å—節為è½æ–¼192~223çš„utf8çš„ä¸æ–‡å—(表示該ä¸æ–‡ç‚ºç”±2個å—節所組æˆutf8ä¸æ–‡å—) $output_str_len += 2; //累計è¦è¼¸å‡ºçš„æ“·å–å—串長度,ä¸æ–‡å—需算二個å—數 $output_str .= substr($str, $i, 2); //è¦è¼¸å‡ºçš„æ“·å–å—串 $i++; }elseif($str_bit > 223 && $str_bit < 240) { //第一å—節為è½æ–¼223~239çš„utf8çš„ä¸æ–‡å—(表示該ä¸æ–‡ç‚ºç”±3個å—節所組æˆçš„utf8ä¸æ–‡å—) $output_str_len += 2; //累計è¦è¼¸å‡ºçš„æ“·å–å—串長度,ä¸æ–‡å—需算二個å—數 $output_str .= substr($str, $i, 3); //è¦è¼¸å‡ºçš„æ“·å–å—串 $i+=2; }elseif($str_bit > 239 && $str_bit < 248) { //第一å—節為è½æ–¼240~247çš„utf8çš„ä¸æ–‡å—(表示該ä¸æ–‡ç‚ºç”±4個å—節所組æˆçš„utf8ä¸æ–‡å—) $output_str_len += 2; //累計è¦è¼¸å‡ºçš„æ“·å–å—串長度,ä¸æ–‡å—需算二個å—數 $output_str .= substr($str, $i, 4); //è¦è¼¸å‡ºçš„æ“·å–å—串 $i+=3; } } //è¦è¼¸å‡ºçš„æ“·å–å—串為空白時,輸出原始å—串 return ($output_str == '') ? $str : $output_str; }
Initial URL
Initial Description
在UTF-8的編碼下縮減å—串並é¿å…ä¸æ–‡å—串最後一個å—變亂碼
Initial Title
Cut a Long String to a moderate Display String in UTF-8 chracter
Initial Tags
php
Initial Language
PHP