首頁  >  文章  >  後端開發  >  php字串截取自定義函數

php字串截取自定義函數

高洛峰
高洛峰原創
2016-10-21 10:08:16993瀏覽

       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 . &#39;...&#39;; break; //如果进行了截取,字符串末尾加省略符号“...”
        }
    }
    return $s;
}

呼叫的方法特別簡單,在普通的php檔案裡面直接呼叫方法名稱:

cut();

就行了,不過裡面必須要傳參數,一般第1和第2個必須的,第3個可選

例如我們想截取一段字串的前10個漢子,那麼我們就這樣呼叫

cut($str,10);

其中$str為要截取的字串,10為長度。

因為預設的情況下,如果截取之前的長度超過截取之後的長度,那麼超出部分函數會預設使用'...'來替代後面的字串

如果我們不想讓超出部分隱藏替換成' ....',那我們只需要在後面再增加一個參數'false'就行了,如

cut($str,10,false);


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn