php使用自訂函數實現統計中文字串長度的方法執行個體詳解

來源:互聯網
上載者:User
這篇文章主要介紹了php自訂函數實現統計中文字串長度的方法,結合執行個體形式總結分析了php針對中文的判定、編碼與運算相關操作技巧,需要的朋友可以參考下

本文執行個體講述了php自訂函數實現統計中文字串長度的方法。分享給大家供大家參考,具體如下:

中文字元計算為2個字元 英文字元計算為1個

代碼

/*** 可以統計中文字串長度的函數**/function abslength($str){  $len=strlen($str);  $i=0;  while($i<$len)  {    if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str[$i]))    {      $i+=2;    }    else    {      $i+=1;    }  }  return $i;}

另:php判斷字元長度:中文,英文,數字。

這個方法很多。 記錄一個簡單的。

mb_strlen($str, 'GBK');

缺點是要安裝mb庫。

不過這個還是有部分問題待解決。

GB碼編碼規則是這樣的:每個漢字由兩個位元組構成,第一個位元組的範圍從0XA1-0XFE,共96種。第二個位元組的範圍分別為0XA1-0XFE,共96種。利用這兩個位元組共可定義出 96 * 96=8836種漢字。實際共有6763個漢字。

BIG5碼編碼規則是這樣的:每個漢字由兩個位元組構成,第一個位元組的範圍從0X81-0XFE,共126種。第二個位元組的範圍分別為0X40-0X7E,0XA1-0XFE,共157種。也就是說,利用這兩個位元組共可定義出 126 * 157=19782種漢字。這些漢字的一部分是我們常用到的,如一、丁,這些字我們稱為常用字,其BIG5碼的範圍為0XA440-0XC671,共5401個。較不常用的字,如濫、調,我們稱為次常用字,範圍為 0XC940-0XF9FE,共7652個,剩下的便是一些特殊字元。

安全點的方法。

function StrLenW($str){    $count = 0;    $len = strlen($str);     for($i=0; $i<$len; $i++,$count++)       if(ord($str[$i])>=128)        $i++;     return $count;}

最後,下面這個才是正確的,通用的!

代碼:

/**作用:統計字元長度包括中文、英文、數字* 參數:需要進行統計的字串、編碼格式目前系統統一使用UTF-8* 修改記錄:   $str = "kds";  echo sstrlen($str,'utf-8');* */function sstrlen($str,$charset) {    $n = 0; $p = 0; $c = '';    $len = strlen($str);    if($charset == 'utf-8') {      for($i = 0; $i < $len; $i++) {        $c = ord($str{$i});        if($c > 252) {          $p = 5;        } elseif($c > 248) {          $p = 4;        } elseif($c > 240) {          $p = 3;        } elseif($c > 224) {          $p = 2;        } elseif($c > 192) {          $p = 1;        } else {          $p = 0;        }        $i+=$p;$n++;      }    } else {      for($i = 0; $i < $len; $i++) {        $c = ord($str{$i});        if($c > 127) {          $p = 1;        } else {          $p = 0;      }        $i+=$p;$n++;      }    }    return $n;}

聯繫我們

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