php自訂函數實作統計中文字串長度的方法詳解

墨辰丷
發布: 2023-03-27 18:00:01
原創
1682 人瀏覽過

這篇文章主要介紹了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;
}
登入後複製

以上就是本文的全部內容,希望對大家的學習有幫助。


相關推薦:

PHP建立文件,並向文件中寫入資料,覆蓋,追加的實現程式碼_php技巧

PHP簡單判斷字串是否包含另一個字串的方法_php技巧

#php ci 取得表單中多個同名input元素值的程式碼_php技巧

#

以上是php自訂函數實作統計中文字串長度的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!