標籤:
1 /** 2 * 方法庫-截取字串-【該函數作者未知】 3 * @param string $string 字串 4 * @param int $length 字元長度 5 * @param string $dot 截取後是否添加... 6 * @param string $charset編碼 7 * @return string 8 */ 9 public function cutstr($string, $length, $dot = ‘ ...‘, $charset = ‘utf-8‘) {10 if (strlen($string) <= $length) {11 return $string;12 }13 $string = str_replace(array(‘&‘, ‘"‘, ‘<‘, ‘>‘), array(‘&‘, ‘"‘, ‘<‘, ‘>‘), $string);14 $strcut = ‘‘;15 if (strtolower($charset) == ‘utf-8‘) {16 $n = $tn = $noc = 0;17 while ($n < strlen($string)) {18 $t = ord($string[$n]); //ASCII?19 if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {20 $tn = 1; $n++; $noc++;21 } elseif (194 <= $t && $t <= 223) {22 $tn = 2; $n += 2; $noc += 2;23 } elseif (224 <= $t && $t < 239) {24 $tn = 3; $n += 3; $noc += 2;25 } elseif (240 <= $t && $t <= 247) {26 $tn = 4; $n += 4; $noc += 2;27 } elseif (248 <= $t && $t <= 251) {28 $tn = 5; $n += 5; $noc += 2;29 } elseif ($t == 252 || $t == 253) {30 $tn = 6; $n += 6; $noc += 2;31 } else {32 $n++;33 }34 if($noc >= $length) {35 break;36 }37 }38 if ($noc > $length) {39 $n -= $tn;40 }41 $strcut = substr($string, 0, $n);42 } else {43 for ($i = 0; $i < $length; $i++) {44 $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];45 }46 }47 $strcut = str_replace(array(‘&‘, ‘"‘, ‘<‘, ‘>‘), array(‘&‘, ‘"‘, ‘<‘, ‘>‘), $strcut);48 return $strcut.$dot;49 }
php 截取字串