最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php自定義函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)中文字符串長度的方法小結(jié)

 更新時(shí)間:2017年04月15日 11:57:34   作者:小炒花生米  
這篇文章主要介紹了php自定義函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)中文字符串長度的方法,結(jié)合實(shí)例形式總結(jié)分析了php針對中文的判定、編碼與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了php自定義函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)中文字符串長度的方法。分享給大家供大家參考,具體如下:

中文字符計(jì)算為2個(gè)字符 英文字符計(jì)算為1個(gè)

代碼

/**
* 可以統(tǒng)計(jì)中文字符串長度的函數(shù)
*
*/
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判斷字符長度:中文,英文,數(shù)字。

這個(gè)方法很多。 記錄一個(gè)簡單的。

mb_strlen($str, 'GBK');

缺點(diǎn)是要安裝mb庫。

不過這個(gè)還是有部分問題待解決。

GB碼編碼規(guī)則是這樣的:每個(gè)漢字由兩個(gè)字節(jié)構(gòu)成,第一個(gè)字節(jié)的范圍從0XA1-0XFE,共96種。第二個(gè)字節(jié)的范圍分別為0XA1-0XFE,共96種。利用這兩個(gè)字節(jié)共可定義出 96 * 96=8836種漢字。實(shí)際共有6763個(gè)漢字。

BIG5碼編碼規(guī)則是這樣的:每個(gè)漢字由兩個(gè)字節(jié)構(gòu)成,第一個(gè)字節(jié)的范圍從0X81-0XFE,共126種。第二個(gè)字節(jié)的范圍分別為0X40-0X7E,0XA1-0XFE,共157種。也就是說,利用這兩個(gè)字節(jié)共可定義出 126 * 157=19782種漢字。這些漢字的一部分是我們常用到的,如一、丁,這些字我們稱為常用字,其BIG5碼的范圍為0XA440-0XC671,共5401個(gè)。較不常用的字,如濫、調(diào),我們稱為次常用字,范圍為 0XC940-0XF9FE,共7652個(gè),剩下的便是一些特殊字符。

安全點(diǎn)的方法。

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

最后,下面這個(gè)才是正確的,通用的!

代碼:

/**作用:統(tǒng)計(jì)字符長度包括中文、英文、數(shù)字
* 參數(shù):需要進(jìn)行統(tǒng)計(jì)的字符串、編碼格式目前系統(tǒng)統(tǒng)一使用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;
}

PS:這里再為大家推薦2款非常方便的統(tǒng)計(jì)工具供大家參考使用:

在線字?jǐn)?shù)統(tǒng)計(jì)工具:
http://tools.jb51.net/code/zishutongji

在線字符統(tǒng)計(jì)與編輯工具:
http://tools.jb51.net/code/char_tongji

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php常用函數(shù)與技巧總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • PHP中實(shí)現(xiàn)Bloom Filter算法

    PHP中實(shí)現(xiàn)Bloom Filter算法

    這篇文章主要介紹了PHP中實(shí)現(xiàn)Bloom Filter算法,本文直接給出實(shí)現(xiàn)代碼,代碼中給出詳細(xì)注釋,Bloom Filter算法介紹等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • php5.6不能擴(kuò)展redis.so的解決方法

    php5.6不能擴(kuò)展redis.so的解決方法

    這篇文章主要為大家介紹了php5.6不能擴(kuò)展redis.so的解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • PHP符合PSR編程規(guī)范的實(shí)例分享

    PHP符合PSR編程規(guī)范的實(shí)例分享

    好的代碼書寫習(xí)慣可以讓人賞心悅目,下面這篇文章就給大家分享了PHP符合PSR編程規(guī)范的實(shí)例代碼,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • php自動(dòng)識別文件編碼并轉(zhuǎn)換為UTF-8的方法

    php自動(dòng)識別文件編碼并轉(zhuǎn)換為UTF-8的方法

    PHP轉(zhuǎn)換文件編碼是一個(gè)比較簡單的事情,但是難的是傳遞中文參數(shù)的時(shí)候,有時(shí)候不知道是什么編碼,結(jié)果造成了亂碼的現(xiàn)象。這篇文章主要介紹了php自動(dòng)識別編碼并轉(zhuǎn)換為UTF-8的方法,需要的朋友可以參考下
    2014-06-06
  • mongodb和php的用法詳解

    mongodb和php的用法詳解

    在本篇文章中小編給大家分享了關(guān)于mongodb和php的用法以及相關(guān)知識點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • php的curl封裝類用法實(shí)例

    php的curl封裝類用法實(shí)例

    這篇文章主要介紹了php的curl封裝類用法,以實(shí)例形式較為詳細(xì)的講述了curl封裝類及其使用方法,并總結(jié)了GET與POST的用法,需要的朋友可以參考下
    2014-11-11
  • 詳解php中curl返回false的解決辦法

    詳解php中curl返回false的解決辦法

    這篇文章主要介紹了php中curl返回false的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • PHP設(shè)計(jì)模式之解釋器模式淺析

    PHP設(shè)計(jì)模式之解釋器模式淺析

    解釋器模式,它是什么呢?意思就是,給定一個(gè)語言, 定義它的文法的一種表示,并定義一個(gè)解釋器,該解釋器使用該表示來解釋語言中的句子,這是最實(shí)在的一種說法。我們還可以理解為它是用于分析一個(gè)實(shí)體的關(guān)鍵元素,并且針對每個(gè)元素提供自己的解釋或相應(yīng)動(dòng)作
    2023-04-04
  • PHP轉(zhuǎn)Go之?dāng)?shù)組的正確使用詳解

    PHP轉(zhuǎn)Go之?dāng)?shù)組的正確使用詳解

    這篇文章主要為大家對比一下PHP中的Array和Golang中的 Array&Slice&Map,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09
  • Windows平臺(tái)實(shí)現(xiàn)PHP連接SQL Server2008的方法

    Windows平臺(tái)實(shí)現(xiàn)PHP連接SQL Server2008的方法

    這篇文章主要介紹了Windows平臺(tái)實(shí)現(xiàn)PHP連接SQL Server2008的方法,結(jié)合實(shí)例形式分析了Windows平臺(tái)PHP連接SQL Server2008所需的相關(guān)dll動(dòng)態(tài)鏈接庫文件及相應(yīng)的配置與使用方法,需要的朋友可以參考下
    2017-07-07

最新評論

莱芜市| 原阳县| 平原县| 洪湖市| 政和县| 界首市| 大方县| 大冶市| 越西县| 康平县| 蒙山县| 安康市| 深泽县| 原平市| 南华县| 昌江| 突泉县| 鹤壁市| 湘乡市| 大悟县| 南召县| 杂多县| 邯郸县| 沙雅县| 临西县| 商洛市| 施甸县| 梅州市| 怀远县| 长泰县| 长葛市| 黄山市| 灵宝市| 射阳县| 阳高县| 阳城县| 宁南县| 万全县| 双柏县| 新化县| 玛纳斯县|