亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php判斷字符串長度 strlen()與mb_strlen()函數

2024-09-04 11:48:33
字體:
來源:轉載
供稿:網友

我們知道在php中要判斷字符串長度我們只要使用strlen()與mb_strlen()函數既可以了,但是并不是我們想得這么簡單,特別是在對中英文混合時上面函數有點力不從心,下面我來給各位朋友介紹.

strlen()

PHP strlen() 函數

定義和用法:strlen() 函數返回字符串的長度.

語法:strlen(string)

參數:string 

描述:必需,規定要檢查的字符串.

PHP實例代碼如下:

  1. <?php  
  2. $str=‘中文a字1符‘;  
  3. echo strlen($str);  
  4. echo ‘<br />‘;  
  5. echo mb_strlen($str,‘UTF8‘);  
  6. //輸出結果  
  7. //14  
  8. //6  
  9. ?> 

結果分析:在strlen計算時,對待一個UTF8的中文字符是3個長度,所以“中文a字1符”長度是3*4+2=14.

在mb_strlen計算時,選定內碼為UTF8,則會將一個中文字符當作長度1來計算,所以“中文a字1符”長度是6.

mb_strlen()函數

需要注意的是,mb_strlen并不是PHP核心函數,使用前需要確保在php.ini中加載了php_mbstring.dll,即確保“extension=php_mbstring.dll”這一行存在并且沒有被注釋掉,否則會出現未定義函數的問題,代碼如下:

  1. <?php  
  2. $str=‘中文a字1符‘;  
  3. //計算如下  
  4. echo (strlen($str) + mb_strlen($str,‘UTF8‘)) / 2;  
  5. echo  
  6. //輸出結果  
  7. //10  
  8. ?> 

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

講解這兩者之間的區別,代碼如下:

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

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

雖然上面函數可以簡單解決一些中英文混合問題,但是不能用于實實際中,下面我來給各位朋友介紹其它比較好的辦法.

PHP獲取中英文混合字符串長度的實現代碼如下,1中文=1位,2英文=1位,可自行修改,代碼如下:

  1. /** 
  2. * PHP獲取字符串中英文混合長度  
  3. * @param $str string 字符串 
  4. * @param $$charset string 編碼 
  5. * @return 返回長度,1中文=1位,2英文=1位 
  6. */ 
  7. function strLength($str,$charset='utf-8'){ 
  8. if($charset=='utf-8'$str = iconv('utf-8','gb2312',$str); 
  9. $num = strlen($str); 
  10. $cnNum = 0; 
  11. for($i=0;$i<$num;$i++){ 
  12. if(ord(substr($str,$i+1,1))>127){ 
  13. $cnNum++; 
  14. $i++; 
  15. $enNum = $num-($cnNum*2); 
  16. $number = ($enNum/2)+$cnNum
  17. return ceil($number); 
  18. //測試輸出長度都為15 
  19. $str1 = '測試測試測試測試測試測試測試測'
  20. $str2 = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
  21. $str3 = 'aa測試aa測試aa測試aa測試aaaaaa'
  22. echo strLength($str1,'gb2312'); 
  23. echo strLength($str2,'gb2312'); 
  24. echo strLength($str3,'gb2312'); 

截取字符串函數

UTF8編碼,在UTF8中,一個中文字符占3個字節,代碼如下:

  1. function msubstr($str$start$len) { 
  2.  $tmpstr = ""
  3.  $strlen = $start + $len
  4.  for($i = 0; $i < $strlen$i++){ 
  5.   if(ord(substr($str$i, 1)) > 127){ 
  6.    $tmpstr.=substr($str$i, 3); 
  7.    $i+=2; 
  8.   }else 
  9.    $tmpstr.= substr($str$i, 1); 
  10.  } 
  11.  return $tmpstr
  12. echo msubstr("一二三天下致公english",0,10); 

GB2312編碼,在gb2312中,一個中文字符占2個字節,代碼如下:

  1. <?php 
  2. function msubstr($str$start$len) {   //? 
  3.    $tmpstr = ""
  4.    $strlen = $start + $len
  5.    if(preg_match('/[/d/s]{2,}/',$str)){$strlen=$strlen-2;} 
  6.    for($i = 0; $i < $strlen$i++) { 
  7.        if(ord(substr($str$i, 1)) > 0xa0) { 
  8.            $tmpstr .= substr($str$i, 2); 
  9.            $i++; 
  10.        } else 
  11.            $tmpstr .= substr($str$i, 1); 
  12.      } 
  13.    return $tmpstr
  14.  } 
  15.    
  16. ?> 

編碼兼容性良好的函數,代碼如下:

  1. function cc_msubstr($str$start=0, $length$charset="utf-8"$suffix=true) 
  2.  if(function_exists("mb_substr")) 
  3.   return mb_substr($str$start$length$charset); 
  4.  elseif(function_exists('iconv_substr')) { 
  5.   return iconv_substr($str,$start,$length,$charset); 
  6.  } 
  7.  $re['utf-8']   = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|[/xe0-/xef][/x80-/xbf]{2}|[/xf0-/xff] 
  8.  
  9. [/x80-/xbf]{3}/"; 
  10.  $re['gb2312'] = "/[/x01-/x7f]|[/xb0-/xf7][/xa0-/xfe]/"
  11.  $re['gbk']   = "/[/x01-/x7f]|[/x81-/xfe][/x40-/xfe]/"
  12.  $re['big5']   = "/[/x01-/x7f]|[/x81-/xfe]([/x40-/x7e]|/xa1-/xfe])/"
  13.  preg_match_all($re[$charset], $str$match); 
  14.  $slice = join("",array_slice($match[0], $start$length)); 
  15.  if($suffixreturn $slice."…"
  16.  return $slice

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品福利观看| 成人在线视频网站| 亚洲午夜久久久影院| 中文字幕九色91在线| 国产欧美精品一区二区三区-老狼| 久久精品这里热有精品| 国产欧美韩国高清| 欧美日韩亚洲高清| 国内精品久久久久久影视8| 国产精品第七影院| 亚洲福利在线播放| 日韩中文字幕免费| 亚洲一区二区三区久久| 亚洲精品电影在线观看| 91欧美日韩一区| 久久久免费电影| 日韩欧中文字幕| 欧美色视频日本版| 欧美俄罗斯乱妇| 最近的2019中文字幕免费一页| 亚洲精品国产拍免费91在线| 精品爽片免费看久久| 日韩美女免费观看| 国产在线观看精品一区二区三区| 日韩激情视频在线| 久久久久女教师免费一区| 国产综合色香蕉精品| 国产精品嫩草影院久久久| 成人高清视频观看www| 亚洲欧美日韩一区二区三区在线| 91在线直播亚洲| 国产精品久久久久久久天堂| 国产91精品黑色丝袜高跟鞋| 欧美视频在线观看免费| 久久免费国产视频| 成人黄色免费看| 91精品国产色综合久久不卡98口| 91精品国产沙发| 国产精品电影一区| 91久久国产精品91久久性色| 国产91久久婷婷一区二区| 久久久成人精品| 国产国产精品人在线视| 精品香蕉在线观看视频一| 欧美另类暴力丝袜| 黄色一区二区三区| 亚洲精品自拍第一页| 91美女高潮出水| 97精品久久久| 97视频在线观看免费高清完整版在线观看| 国产亚洲成av人片在线观看桃| 亚洲精品www久久久| 亚洲日本中文字幕免费在线不卡| 欧美精品videosex牲欧美| 性色av一区二区咪爱| 日韩亚洲欧美成人| 亚洲偷欧美偷国内偷| 国产精品白丝av嫩草影院| 海角国产乱辈乱精品视频| 亚洲韩国日本中文字幕| 97久久精品人搡人人玩| 91精品久久久久久| 亚洲精品91美女久久久久久久| 久久99国产精品久久久久久久久| 亚洲欧美国产一区二区三区| 欧美一级免费看| 成人xvideos免费视频| 欧美精品在线看| 亚洲娇小xxxx欧美娇小| 疯狂做受xxxx欧美肥白少妇| 日本一区二区不卡| 欧美日韩另类视频| 日韩在线观看免费网站| 亚洲欧美中文另类| 国产精品v日韩精品| 亚洲最大成人免费视频| 2019中文字幕在线观看| 成人免费观看49www在线观看| 日韩av高清不卡| 国产精品视频yy9099| 2025国产精品视频| 狠狠爱在线视频一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品久久久av| 精品久久久久人成| 国内精品久久久久| 欧美伊久线香蕉线新在线| 一区二区三区精品99久久| 自拍偷拍亚洲区| 亚洲а∨天堂久久精品喷水| 久久久久亚洲精品成人网小说| 欧美理论电影在线观看| 北条麻妃一区二区在线观看| 国产自产女人91一区在线观看| 久久久久久久国产精品视频| 日韩精品中文字幕久久臀| 久久在线免费观看视频| 日韩av在线免播放器| 欧美午夜激情在线| 欧美日韩亚洲系列| 国语自产偷拍精品视频偷| 丝袜亚洲另类欧美重口| 亚洲精品98久久久久久中文字幕| 伊人男人综合视频网| 亚洲欧美激情另类校园| 国产午夜精品全部视频在线播放| 亚洲欧美日韩精品久久| 亚洲女人天堂色在线7777| 欧美成人精品在线观看| 91情侣偷在线精品国产| 国产精品亚洲精品| 久久影视电视剧免费网站| 欧美激情一区二区久久久| 国产精品久久久久久搜索| 亚洲电影免费观看高清完整版在线| 91香蕉嫩草神马影院在线观看| 91国产精品91| 日韩成人激情视频| 中文字幕亚洲综合久久| 成人动漫网站在线观看| 中文字幕亚洲无线码在线一区| 26uuu国产精品视频| 91高清免费视频| 亚洲男人的天堂在线播放| 538国产精品一区二区在线| 欧洲亚洲免费视频| 国产成人在线精品| 日韩欧美国产一区二区| 色一区av在线| 精品视频在线观看日韩| 欧美成人午夜激情视频| 欧美福利在线观看| 国产精品青草久久久久福利99| 亚洲成人xxx| 国产精品6699| 在线看片第一页欧美| 日韩在线观看免费高清| 日韩在线视频导航| 91极品视频在线| 久久精品中文字幕| 欧美精品videossex性护士| 中文字幕成人在线| 国产精品美乳在线观看| 久久99精品久久久久久青青91| 欧美大肥婆大肥bbbbb| 亚洲欧美日韩图片| 亚洲国产精品久久91精品| 欧美日韩免费区域视频在线观看| 中文字幕一区日韩电影| 中国china体内裑精亚洲片| www.亚洲天堂| 亚洲美女喷白浆| 亚洲成人久久一区| 国语自产精品视频在线看抢先版图片| 在线看福利67194| 国内精品模特av私拍在线观看| 亚洲美女性视频| 日韩av中文字幕在线播放| 亚洲国产另类久久精品| 欧美成人精品h版在线观看| 亚洲欧美中文日韩在线v日本| 国产日韩欧美在线播放| 亚洲在线免费视频| 欧美性xxxx18|