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

編寫(xiě)PHP程序檢查字符串中的中文字符個(gè)數(shù)的實(shí)例分享

 更新時(shí)間:2016年03月17日 16:14:13   投稿:goldensun  
這篇文章主要介紹了編寫(xiě)PHP程序檢查字符串中的中文字符個(gè)數(shù)的實(shí)例分享,文中利用了PHP中mb_strlen函數(shù)的實(shí)現(xiàn)原理,需要的朋友可以參考下

有時(shí)候我們需要計(jì)算一個(gè)字符串中包含的字?jǐn)?shù),對(duì)于純英文字符串,字?jǐn)?shù)等于字符串長(zhǎng)度,用
strlen函數(shù)即可獲得,但如果字符串中包含中文怎辦?mb_strlen可以實(shí)現(xiàn),但不幸沒(méi)裝擴(kuò)展,那就自己實(shí)現(xiàn)一下吧。

php有一個(gè)擴(kuò)展一般是必裝的,我們可以使用mb_strlen來(lái)獲取字符串中的字?jǐn)?shù),用法一般如下:

$len = mb_strlen("你是我的小蘋(píng)果","utf-8");


如愿獲得字符串長(zhǎng)度:7.

如果沒(méi)裝mb擴(kuò)展呢?自己實(shí)現(xiàn)一下吧。

我們要先明白一個(gè)事實(shí):字符串是由字符組成的,而字符是由字節(jié)表示的,每個(gè)英文字符是一個(gè)字節(jié),對(duì)應(yīng)一個(gè)ascii碼,英文字符的ascii碼是小于128的,也就是十六進(jìn)制的 0x80 .當(dāng)一個(gè)字節(jié)的ascii碼超過(guò)了127,那就說(shuō)明當(dāng)前字節(jié)不是一個(gè)完整的字符。

比如

$str = "你是我的小蘋(píng)果";

中的$str{0}可以取到第一個(gè)字節(jié),我們來(lái)看一下它是啥:

php > $str = "你是我的小蘋(píng)果";
php > echo $str{0};
�

是個(gè)亂碼,它只是

復(fù)制代碼 代碼如下:
       
字的字節(jié)之一,也就是說(shuō),
復(fù)制代碼 代碼如下:

這個(gè)字符是由超過(guò)一個(gè)字節(jié)組成的,我們這樣試試:

php > echo $str{0}.$str{1}.$str{2};


可以看到,將三個(gè)字節(jié)連在一起輸出,就成了一個(gè)完整的

復(fù)制代碼 代碼如下:

。

至于這里為什么是三個(gè)字節(jié),而不是兩個(gè)或4個(gè)?這個(gè)取決于字符串的編碼,我這里控制臺(tái)默認(rèn)是utf8編碼的,在PHP中,一個(gè)utf8字符是用三個(gè)字節(jié)表達(dá)的,如果是gbk編碼,則會(huì)是兩個(gè)字節(jié)。至于編碼和字節(jié)的關(guān)系,這個(gè)話題比較大,一篇說(shuō)不完,請(qǐng)參考這篇文章:字符編碼筆記:ascii,unicode和utf8 。

知道了這些,我們就可以自己編寫(xiě)一個(gè)字?jǐn)?shù)檢查的函數(shù)了,大致流程如下:

1.for循環(huán)遍歷字節(jié) 2.判斷字節(jié)編碼是否 >= 0x80,是的話跳過(guò)N個(gè)字節(jié)

我寫(xiě)了個(gè)簡(jiǎn)單的函數(shù),可以判斷gbk或utf8字符串的長(zhǎng)度,僅供參考:

<?php

function mbstrlen($str,$encoding="utf8")
{

  if (($len = strlen($str)) == 0) {
    return 0;
  }

  $encoding = strtolower($encoding);

  if ($encoding == "utf8" or $encoding == "utf-8") {
    $step = 3;
  } elseif ($encoding == "gbk" or $encoding == "gb2312") {
    $step = 2;
  } else {
    return false;
  }

  $count = 0;
  for ($i=0; $i<$len; $i++) {
    $count++;
    //如果字節(jié)碼大于127,則根據(jù)編碼跳幾個(gè)字節(jié)
    if (ord($str{$i}) >= 0x80) {
      $i = $i + $step - 1;//之所以減去1,因?yàn)閒or循環(huán)本身還要$i++
    }
  }
  return $count;
}

echo mbstrlen(iconv("utf-8","gbk","你是我的小蘋(píng)果"),"gbk");
echo mbstrlen("你是我的小蘋(píng)果");

相關(guān)文章

  • thinkPHP實(shí)現(xiàn)多字段模糊匹配查詢(xún)的方法

    thinkPHP實(shí)現(xiàn)多字段模糊匹配查詢(xún)的方法

    這篇文章主要介紹了thinkPHP實(shí)現(xiàn)多字段模糊匹配查詢(xún)的方法,結(jié)合實(shí)例形式分析了thinkPHP進(jìn)行模糊匹配查詢(xún)的相關(guān)模型操作與sql語(yǔ)句,需要的朋友可以參考下
    2016-12-12
  • 實(shí)例講解PHP設(shè)計(jì)模式編程中的簡(jiǎn)單工廠模式

    實(shí)例講解PHP設(shè)計(jì)模式編程中的簡(jiǎn)單工廠模式

    這篇文章主要介紹了PHP設(shè)計(jì)模式編程中的簡(jiǎn)單工廠模式,舉了一個(gè)水果銷(xiāo)售和一個(gè)計(jì)算器設(shè)計(jì)的例子,需要的朋友可以參考下
    2016-02-02
  • 深入理解 PHP7 中全新的 zval 容器和引用計(jì)數(shù)機(jī)制

    深入理解 PHP7 中全新的 zval 容器和引用計(jì)數(shù)機(jī)制

    這篇文章主要介紹了 PHP7 中全新的 zval 容器和引用計(jì)數(shù)機(jī)制的相關(guān)知識(shí), 主要側(cè)重于解釋新 zval 容器中的引用計(jì)數(shù)機(jī)制。需要的朋友可以參考下
    2018-10-10
  • 淺析ThinkPHP中execute和query方法的區(qū)別

    淺析ThinkPHP中execute和query方法的區(qū)別

    初學(xué)ThinkPHP的時(shí)候,很多人都對(duì)execute()和query()方法的區(qū)別搞不懂,本文就此淺析二者的區(qū)別,需要的朋友可以參考下
    2014-06-06
  • 圖文詳解PHP中GC回收機(jī)制的利用

    圖文詳解PHP中GC回收機(jī)制的利用

    GC如其名就是垃圾收集,當(dāng)然這里僅就內(nèi)存而言,下面這篇文章主要給大家介紹了關(guān)于PHP中GC回收機(jī)制利用的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • PHP 9 大緩存技術(shù)總結(jié)

    PHP 9 大緩存技術(shù)總結(jié)

    也就是將頁(yè)面全部生成html靜態(tài)頁(yè)面,用戶(hù)訪問(wèn)時(shí)直接訪問(wèn)的靜態(tài)頁(yè)面,而不會(huì)去走php服務(wù)器解析的流程。此種方式,在CMS系統(tǒng)中比較常見(jiàn),比如dedecms,下面通過(guò)本文給大家分享了php9大緩存技術(shù)總結(jié),需要的朋友可以參考下
    2015-09-09
  • 在laravel中實(shí)現(xiàn)事務(wù)回滾的方法

    在laravel中實(shí)現(xiàn)事務(wù)回滾的方法

    今天小編就為大家分享一篇在laravel中實(shí)現(xiàn)事務(wù)回滾的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • php fopen()函數(shù)案例詳解

    php fopen()函數(shù)案例詳解

    這篇文章主要介紹了php fopen()函數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Laravel5.1 框架關(guān)聯(lián)模型之后操作實(shí)例分析

    Laravel5.1 框架關(guān)聯(lián)模型之后操作實(shí)例分析

    這篇文章主要介紹了Laravel5.1 框架關(guān)聯(lián)模型之后操作,結(jié)合實(shí)例形式分析了laravel5.1框架寫(xiě)入關(guān)聯(lián)模型、更新關(guān)聯(lián)關(guān)系等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • PHP實(shí)現(xiàn)使用優(yōu)酷土豆視頻地址獲取swf播放器分享地址

    PHP實(shí)現(xiàn)使用優(yōu)酷土豆視頻地址獲取swf播放器分享地址

    這篇文章主要介紹了PHP實(shí)現(xiàn)使用優(yōu)酷土豆視頻地址獲取swf播放器分享地址,即分析優(yōu)酷土豆的視頻頁(yè)面地址,從而獲得對(duì)應(yīng)的swf播放器分享地址,需要的朋友可以參考下
    2014-06-06

最新評(píng)論

奉贤区| 扶绥县| 高邑县| 新余市| 右玉县| 新晃| 独山县| 大余县| 大厂| 万山特区| 高碑店市| 苍溪县| 资溪县| 札达县| 禄丰县| 桦川县| 沅陵县| 四川省| 静海县| 芜湖市| 浦北县| 贺州市| 读书| 德令哈市| 东至县| 始兴县| 达尔| 达州市| 慈利县| 乌拉特后旗| 大渡口区| 昭平县| 鹤壁市| 万盛区| 长顺县| 平顺县| 广汉市| 永济市| 淮北市| 应城市| 万州区|