我們下面就來介紹一下如何透過PHP自訂函數來截取我們想要截取的字元長度,超出部分用省略號取代或隱藏。
字串截取方法:
//截取字符串长度 function cut($Str, $Length,$more=true) { //$Str为截取字符串,$Length为需要截取的长度 global $s; $i = 0; $l = 0; $ll = strlen($Str); $s = $Str; $f = true; while ($i <= $ll) { if (ord($Str{$i}) < 0x80) { $l++; $i++; } else if (ord($Str{$i}) < 0xe0) { $l++; $i += 2; } else if (ord($Str{$i}) < 0xf0) { $l += 2; $i += 3; } else if (ord($Str{$i}) < 0xf8) { $l += 1; $i += 4; } else if (ord($Str{$i}) < 0xfc) { $l += 1; $i += 5; } else if (ord($Str{$i}) < 0xfe) { $l += 1; $i += 6; } if (($l >= $Length - 1) && $f) { $s = substr($Str, 0, $i); $f = false; } if (($l > $Length) && ($i < $ll) && $more) { $s = $s . '...'; break; //如果进行了截取,字符串末尾加省略符号“...” } } return $s; }
使用方法:
$str = '看看截取到哪里?'; echo cut($str,1); echo '<br>'; echo cut($str,4); echo '<br>'; echo cut($str,5); echo '<br>'; echo cut($str,5,false); echo '<br>'; $str = '中英文混合看看hello?'; echo cut($str,18); echo '<br>'; echo cut($str,50);
輸出:
看... 看看... 看看... 看看 中英文混合看看hel... 中英文混合看看hello?
解釋:一般UTF-8格式為3個位元組,而GBKgrrreee
解釋:一般UTF-8格式為3個位元組,而GBKgb2312以UTF-8編碼為實例。 透過第三個參數$more可以開關省略號模式,預設為true為帶省略號,false為沒有省略號。