(實用篇)多個PHP中文字串截取函數

來源:互聯網
上載者:User
字串截取是一個非常常見的編程任務,而往往帶中文的字串截取會經常用到。雖然不難,但是自己寫函數實現又耗費時間,這裡介紹一個比較好用的字串截取函數,能夠勝任基本的需求了

<?phpfunction sysSubStr($string,$length,$append = false) {     if(strlen($string) <= $length )     {         return $string;     }     else     {         $i = 0;         while ($i < $length)         {             $stringTMP = substr($string,$i,1);             if ( ord($stringTMP) >=224 )             {                 $stringTMP = substr($string,$i,3);                 $i = $i + 3;             }             elseif( ord($stringTMP) >=192 )             {                 $stringTMP = substr($string,$i,2);                 $i = $i + 2;             }             else             {                 $i = $i + 1;             }             $stringLast[] = $stringTMP;         }         $stringLast = implode("",$stringLast);         if($append)         {             $stringLast .= "...";         }         return $stringLast;     } } $string = "簡明現代魔法 —— 專註於互連網主流的各種技術"; $length = "27"; $append = true; echo sysSubStr($string,$length,$append); // 輸出 // 簡明現代魔法 —— 專...?>

截取GB2312中文字串:

<?php//截取中文字串function mysubstr($str, $start, $len) {    $tmpstr = "";    $strlen = $start + $len;    for($i = 0; $i < $strlen; $i++) {        if(ord(substr($str, $i, 1)) > 0xa0) {            $tmpstr .= substr($str, $i, 2);            $i++;        } else            $tmpstr .= substr($str, $i, 1);    }    return $tmpstr;}?>

截取utf8編碼的多位元組字串:

<?php//截取utf8字串function utf8Substr($str, $from, $len){    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.                       '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',                       '$1',$str);}?>

UTF-8、GB2312都支援的漢字截取函數:

<?php/* Utf-8、gb2312都支援的漢字截取函數 cut_str(字串, 截取長度, 開始長度, 編碼); 編碼預設為 utf-8 開始長度預設為 0 */ function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') {     if($code == 'UTF-8')     {         $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7]        [\x80-\xbf][\x80-\xbf][\x80-\xbf]/";         preg_match_all($pa, $string, $t_string);         if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";         return join('', array_slice($t_string[0], $start, $sublen));     }     else     {         $start = $start*2;         $sublen = $sublen*2;         $strlen = strlen($string);         $tmpstr = '';         for($i=0; $i< $strlen; $i++)         {             if($i>=$start && $i< ($start+$sublen))             {                 if(ord(substr($string, $i, 1))>129)                 {                     $tmpstr.= substr($string, $i, 2);                 }                 else                 {                     $tmpstr.= substr($string, $i, 1);                 }             }             if(ord(substr($string, $i, 1))>129) $i++;         }         if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";         return $tmpstr;     } } $str = "abcd需要截取的字串"; echo cut_str($str, 8, 0, 'gb2312'); ?>

以上就是(實用篇)多個PHP中文字串截取函數的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.