php字串截取自定義函數是我們在開發過程中常常使用到的函數,一般用php內建的函數也行,不過不是特別好用,特別是對中文的支援也不是特別友好,所以我們就自己自訂一個咯。
//$Str为截取字符串,$Length为需要截取的长度 function cut($Str, $Length,$more=true) { 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; }
呼叫的方法特別簡單,在普通的php檔案裡面直接呼叫方法名稱:
cut();
就行了,不過裡面必須要傳參數,一般第1和第2個必須的,第3個可選
例如我們想截取一段字串的前10個漢子,那麼我們就這樣呼叫
cut($str,10);
其中$str為要截取的字串,10為長度。
因為預設的情況下,如果截取之前的長度超過截取之後的長度,那麼超出部分函數會預設使用'...'來替代後面的字串
如果我們不想讓超出部分隱藏替換成' ....',那我們只需要在後面再增加一個參數'false'就行了,如
cut($str,10,false);