亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

字符串長(zhǎng)度函數(shù)strlen和mb_strlen的區(qū)別示例介紹

 更新時(shí)間:2014年09月09日 11:27:02   投稿:whsnow  
strlen和mb_strlen的區(qū)別,但是對(duì)于一些初學(xué)者來(lái)說(shuō),如果不看手冊(cè),也許不太清楚其中的區(qū)別,下面與大家分享下兩者之間的區(qū)別

在php中常見(jiàn)的計(jì)算字符串長(zhǎng)度的函數(shù)有:strlen和mb_strlen.當(dāng)字符全是英文字符的時(shí)候,兩者是一樣。這里主要比較一下,中英文混排的時(shí)候,兩個(gè)計(jì)算結(jié)果。

在PHP中,strlen與mb_strlen是求字符串長(zhǎng)度的函數(shù),但是對(duì)于一些初學(xué)者來(lái)說(shuō),如果不看手冊(cè),也許不太清楚其中的區(qū)別。
下面通過(guò)例子,講解這兩者之間的區(qū)別。

先看例子:

<?php 
//測(cè)試時(shí)文件的編碼方式要是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 
?>

結(jié)果分析:在strlen計(jì)算時(shí),對(duì)待一個(gè)UTF8的中文字符是3個(gè)長(zhǎng)度,所以“中文a字1符”長(zhǎng)度是3*4+2=14,在mb_strlen計(jì)算時(shí),選定內(nèi)碼為UTF8,則會(huì)將一個(gè)中文字符當(dāng)作長(zhǎng)度1來(lái)計(jì)算,所以“中文a字1符”長(zhǎng)度是6 .

利用這兩個(gè)函數(shù)則可以聯(lián)合計(jì)算出一個(gè)中英文混排的串的占位是多少(一個(gè)中文字符的占位是2,英文字符是1)
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;

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

echo mb_internal_encoding();

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

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

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

相關(guān)文章

  • PHPExcel在linux環(huán)境下導(dǎo)出報(bào)500錯(cuò)誤的解決方法

    PHPExcel在linux環(huán)境下導(dǎo)出報(bào)500錯(cuò)誤的解決方法

    下面小編就為大家?guī)?lái)一篇PHPExcel在linux環(huán)境下導(dǎo)出報(bào)500錯(cuò)誤的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • PHP 使用openssl 擴(kuò)展實(shí)現(xiàn)公鑰加密的方法

    PHP 使用openssl 擴(kuò)展實(shí)現(xiàn)公鑰加密的方法

    下面小編就為大家分享一篇PHP 使用openssl 擴(kuò)展實(shí)現(xiàn)公鑰加密的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • PHP ADODB實(shí)現(xiàn)事務(wù)處理功能示例

    PHP ADODB實(shí)現(xiàn)事務(wù)處理功能示例

    這篇文章主要介紹了PHP ADODB實(shí)現(xiàn)事務(wù)處理功能,結(jié)合實(shí)例形式分析了php使用ADODB進(jìn)行事務(wù)提交與回滾處理等相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • php 調(diào)試?yán)鱠ebug_print_backtrace()

    php 調(diào)試?yán)鱠ebug_print_backtrace()

    debug_print_backtrace() 是一個(gè)很低調(diào)的函數(shù),很少有人注意過(guò)它. 不過(guò)當(dāng)我對(duì)著一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象再調(diào)用其它的對(duì)象和文件中的一個(gè)函數(shù)出錯(cuò)時(shí),它正在一邊笑呢
    2012-07-07
  • Linux(CentOS)下PHP擴(kuò)展PDO編譯安裝的方法

    Linux(CentOS)下PHP擴(kuò)展PDO編譯安裝的方法

    這篇文章主要介紹了Linux(CentOS)下PHP擴(kuò)展PDO編譯安裝的方法,詳細(xì)說(shuō)明了Linux下安裝PHP的PDO擴(kuò)展所涉及的相關(guān)技巧與詳細(xì)步驟,需要的朋友可以參考下
    2016-04-04
  • PHP中全面阻止SQL注入式攻擊分析小結(jié)

    PHP中全面阻止SQL注入式攻擊分析小結(jié)

    PHP是一種力量強(qiáng)大但相當(dāng)容易學(xué)習(xí)的服務(wù)器端腳本語(yǔ)言,即使是經(jīng)驗(yàn)不多的程序員也能夠使用它來(lái)創(chuàng)建復(fù)雜的動(dòng)態(tài)的web站點(diǎn)。然而,它在實(shí)現(xiàn)因特網(wǎng)服務(wù)的秘密和安全方面卻常常存在許多困難
    2012-01-01
  • php判斷類(lèi)是否存在函數(shù)class_exists用法分析

    php判斷類(lèi)是否存在函數(shù)class_exists用法分析

    這篇文章主要介紹了php判斷類(lèi)是否存在函數(shù)class_exists用法,實(shí)例分析了PHP針對(duì)類(lèi)是否存在進(jìn)行判斷的應(yīng)用,對(duì)于自動(dòng)加載類(lèi)以及類(lèi)實(shí)例化之前的存在判斷來(lái)說(shuō)都非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • PHP5中使用mysqli的prepare操作數(shù)據(jù)庫(kù)的介紹

    PHP5中使用mysqli的prepare操作數(shù)據(jù)庫(kù)的介紹

    今天小編就為大家分享一篇關(guān)于PHP5中使用mysqli的prepare操作數(shù)據(jù)庫(kù)的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 帖幾個(gè)PHP的無(wú)限分類(lèi)實(shí)現(xiàn)想法~

    帖幾個(gè)PHP的無(wú)限分類(lèi)實(shí)現(xiàn)想法~

    帖幾個(gè)PHP的無(wú)限分類(lèi)實(shí)現(xiàn)想法~...
    2007-01-01
  • 淺析php中array_map和array_walk的使用對(duì)比

    淺析php中array_map和array_walk的使用對(duì)比

    這篇文章給大家先是詳細(xì)的介紹了array_map()和array_walk()的語(yǔ)法、參數(shù)以及注意事項(xiàng),而后又給大家詳細(xì)的介紹了其中的關(guān)鍵點(diǎn),文中介紹的很詳細(xì),相信會(huì)對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們可以參考借鑒,感興趣的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11

最新評(píng)論