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