PHP字串截取長度自訂方法

來源:互聯網
上載者:User
我們下面就來介紹一下如何通過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為沒有省略符號。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.