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

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

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

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

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

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


如愿獲得字符串長度:7.

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

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

比如

$str = "你是我的小蘋果";

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

php > $str = "你是我的小蘋果";
php > echo $str{0};
�

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

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

這個(gè)字符是由超過一個(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è)話題比較大,一篇說不完,請參考這篇文章:字符編碼筆記:ascii,unicode和utf8 。

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

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

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

<?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","你是我的小蘋果"),"gbk");
echo mbstrlen("你是我的小蘋果");

相關(guān)文章

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

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

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

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

    這篇文章主要介紹了PHP設(shè)計(jì)模式編程中的簡單工廠模式,舉了一個(gè)水果銷售和一個(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í)候,很多人都對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)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • PHP 9 大緩存技術(shù)總結(jié)

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

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

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

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

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

    這篇文章主要介紹了php fopen()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項(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框架寫入關(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īng)的swf播放器分享地址,需要的朋友可以參考下
    2014-06-06

最新評(píng)論

海淀区| 县级市| 乐山市| 澄江县| 抚宁县| 胶州市| 荆州市| 兴仁县| 舟曲县| 云梦县| 英德市| 禹州市| 重庆市| 望谟县| 霍城县| 唐山市| 淮南市| 女性| 青龙| 政和县| 郓城县| 岳阳市| 铜山县| 集安市| 海原县| 尖扎县| 卓资县| 定南县| 长白| 侯马市| 崇左市| 尼木县| 保德县| 平潭县| 淮滨县| 平陆县| 鄂温| 前郭尔| 梨树县| 海门市| 余姚市|