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

淺析PHP中strlen和mb_strlen的區(qū)別

 更新時間:2014年08月31日 09:54:18   投稿:hebedich  
在php中常見的計算字符串長度的函數(shù)有:strlen和mb_strlen.當字符全是英文字符的時候,兩者是一樣。這里主要比較一下,中英文混排的時候,兩個計算結果。

在PHP中,strlen與mb_strlen是求字符串長度的函數(shù),但是對于一些初學者來說,如果不看手冊,也許不太清楚其中的區(qū)別。
下面通過例子,講解這兩者之間的區(qū)別。

先看例子:

<?php 
//測試時文件的編碼方式要是UTF8 
$str='中文a字1符'; 
echo strlen($str).'<br>';//14 
echo mb_strlen($str,'utf8').'<br>';//6 
echo mb_strlen($str,'gbk').'<br>';//8 
echo mb_strlen($str,'gb2312').'<br>';//10 
?> 

結果分析:在strlen計算時,對待一個UTF8的中文字符是3個長度,所以“中文a字1符”長度是3*4+2=14,在mb_strlen計算時,選定內碼為UTF8,則會將一個中文字符當作長度1來計算,所以“中文a字1符”長度是6 .

利用這兩個函數(shù)則可以聯(lián)合計算出一個中英文混排的串的占位是多少(一個中文字符的占位是2,英文字符是1)

echo (strlen($str) + mb_strlen($str,'UTF8')) / 2; 

例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,則可以計算出“中文a字1符”的占位是10.

echo mb_internal_encoding(); 

PHP內置的字符串長度函數(shù)strlen無法正確處理中文字符串,它得 到的只是字符串所占的字節(jié)數(shù)。對于GB2312的中文編碼,strlen得到的值是漢字個數(shù)的2倍,而對于UTF-8編碼的中文,就是3倍的差異了(在 UTF-8編碼下,一個漢字占3個字節(jié))。

采用mb_strlen函數(shù)可以較好地解決這個問題。mb_strlen的用法和 strlen類似,只不過它有第二個可選參數(shù)用于指定字符編碼。例如得到UTF-8的字符串$str長度,可以用 mb_strlen($str,'UTF-8')。如果省略第二個參數(shù),則會使用PHP的內部編碼。內部編碼可以通過 mb_internal_encoding()函數(shù)得到。

需要注意的是,mb_strlen并不是PHP核心函數(shù),使用前需要確保在php.ini中加載了php_mbstring.dll,即確?!癳xtension=php_mbstring.dll”這一行存在并且沒有被注釋掉,否則會出現(xiàn)未定義函 數(shù)的問題。

相關文章

  • 關于DISCUZ不用通行證登陸得內容介紹

    關于DISCUZ不用通行證登陸得內容介紹

    DISCUZ是中國最常用的論壇,雖然他本身有通行證給大家連接,但實際上用戶的統(tǒng)一還是很不好,經(jīng)常要建立兩個用戶表,第一不利于注冊和管理,第二浪費數(shù)據(jù)庫。
    2008-10-10
  • Yii操作數(shù)據(jù)庫實現(xiàn)動態(tài)獲取表名的方法

    Yii操作數(shù)據(jù)庫實現(xiàn)動態(tài)獲取表名的方法

    這篇文章主要介紹了Yii操作數(shù)據(jù)庫實現(xiàn)動態(tài)獲取表名的方法,涉及Yii框架針對數(shù)據(jù)庫的動態(tài)操作技巧,需要的朋友可以參考下
    2016-03-03
  • laravel yajra插件 datatable的使用詳解

    laravel yajra插件 datatable的使用詳解

    這篇文章主要介紹了laravel yajra插件 datatable的使用詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • PHP中使用GD庫繪制折線圖 折線統(tǒng)計圖的繪制方法

    PHP中使用GD庫繪制折線圖 折線統(tǒng)計圖的繪制方法

    本文通過代碼給大家介紹php中使用GD庫繪制折線圖,涉及到php中GD庫的一些簡單使用,本文介紹的非常詳細,感興趣的朋友一起學習吧
    2015-11-11
  • Yii2中事務的使用實例代碼詳解

    Yii2中事務的使用實例代碼詳解

    這篇文章主要介紹了Yii2中事務的使用實例代碼詳解的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • 淺談laravel5.5 belongsToMany自身的正確用法

    淺談laravel5.5 belongsToMany自身的正確用法

    今天小編就為大家分享一篇淺談laravel5.5 belongsToMany自身的正確用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • Yii使用Captcha驗證碼的方法

    Yii使用Captcha驗證碼的方法

    這篇文章主要介紹了Yii使用Captcha驗證碼的方法,結合實例形式分析了Yii使用Captcha驗證碼的MVC三層具體實現(xiàn)技巧,需要的朋友可以參考下
    2015-12-12
  • thinkPHP連接sqlite3數(shù)據(jù)庫的實現(xiàn)方法(附Thinkphp代碼生成器下載)

    thinkPHP連接sqlite3數(shù)據(jù)庫的實現(xiàn)方法(附Thinkphp代碼生成器下載)

    這篇文章主要介紹了thinkPHP連接sqlite3數(shù)據(jù)庫的實現(xiàn)方法,涉及thinkPHP的數(shù)據(jù)庫相關配置技巧,并附帶了Thinkphp代碼生成器供讀者下載使用,需要的朋友可以參考下
    2016-05-05
  • PHP設計模式之觀察者模式實例

    PHP設計模式之觀察者模式實例

    一個對象通過添加一個方法(該方法允許另一個對象,即觀察者 注冊自己)使本身變得可觀察。當可觀察的對象更改時,它會將消息發(fā)送到已注冊的觀察者。通過本文給大家介紹PHP設計模式之觀察者模式,需要的朋友參考下
    2016-02-02
  • php5.x禁用eval的操作方法

    php5.x禁用eval的操作方法

    這篇文章主要介紹了php5.x禁用eval的操作方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10

最新評論

左权县| 平顺县| 双城市| 邛崃市| 梧州市| 潍坊市| 香港| 南充市| 泌阳县| 通化市| 武功县| 明星| 苍溪县| 康平县| 开江县| 南昌市| 刚察县| 荣成市| 外汇| 德钦县| 曲周县| 峡江县| 普宁市| 博湖县| 舒兰市| 陆川县| 柯坪县| 丰台区| 西乌珠穆沁旗| 万山特区| 兰西县| 莱芜市| 沽源县| 邳州市| 福鼎市| 尉犁县| 共和县| 峨眉山市| 德令哈市| 贡山| 临泽县|