我們下面就來介紹一下如何通過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 '
';echo cut($str,4);echo '
';echo cut($str,5);echo '
';echo cut($str,5,false);echo '
'; $str = '中英文混合看看hello?';echo cut($str,18);echo '
';echo cut($str,50);
輸出:
看...看看...看看...看看中英文混合看看hel...中英文混合看看hello?
解釋:一般UTF-8格式為3個位元組,而GBK相容gb2312一般都是2個位元組,以上以UTF-8編碼為執行個體。
通過第三個參數$more可以開關省略符號模式,預設為true為帶省略符號,false為沒有省略符號。