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

首頁 > 編程 > PHP > 正文

PHP獲取中英混合字符串長度的方法

2020-03-22 17:46:43
字體:
來源:轉載
供稿:網友
今晚在寫框架的表單驗證類時,需要判斷某個字符串長度是否在指定區間內,很自然地,想到了PHP中的strlen函數。
復制代碼 代碼如下:
$str = 'Hello world!';
echo strlen($str);// 輸出12
然而在PHP自帶的函數中,strlen及mb_strlen都是通過計算字符串所占字節數來計算長度的,在不同的編碼情況下,中文所占的字節數是不同的。在GBK/GB2312下,中文字符占2個字節,而在UTF-8下,中文字符占3個字節。
復制代碼 代碼如下:
$str = '你好,世界!';
echo strlen($str);// GBK或GB2312下輸出12,UTF-8下輸出18
而我們在判斷字符串長度時往往需要判斷的是字符的數量,而非字符串所占字節數,如在UTF-8下的這段PHP代碼:
復制代碼 代碼如下:
$name = '張耕暢';
$len = strlen($name);
// 輸出 FALSE,因為在UTF-8下三個中文占9個字節
if($len = 3 && $len = 8){
echo 'TRUE';
}else{
echo 'FALSE';
}
那么有什么方便而實用的方法可以獲得含中文字符串的長度呢?可以用正則計算出中文字符的個數,在GBK/GB2312編碼下除以2,UTF-8編碼下則除以3,最后再加上非中文字符串的長度,但這樣未免太過麻煩。WordPress這么一段代碼,借鑒如下:
復制代碼 代碼如下:
$str = 'Hello,世界!';
preg_match_all('/./us', $str, $match);
echo count($match[0]);// 輸出9
思想是用html' target='_blank'>正則表達式將字符串分割成單個字符,并直接用count計算出匹配到的字符數,便是我們想要的結果了。但以上代碼在UTF-8編碼下并不能處理GBK/GB2312的中文字符串,因為GBK/GB2312的中文字符會被識別為兩個字符而計算出來的中文字符數量會翻倍,于是我想到了這么一個辦法:
復制代碼 代碼如下:
$tmp = @iconv('gbk', 'utf-8', $str);
if(!empty($tmp)){
$str = $tmp;
}
preg_match_all('/./us', $str, $match);
echo count($match[0]);
兼容GBK/GB2312及UTF-8編碼,經小量數據測試通過,但暫未確定是否完全正確,盼有大牛指點一二。以上本意是為了框架可以兼容多種編碼格式,但一般在日常開發中,一個項目是已經可以確定為何種編碼的,因此可以使用以下函數來方便地獲取字符串長度:
復制代碼 代碼如下:
int iconv_strlen ( string $str [, string $charset = ini_get("iconv.internal_encoding") ] )
PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美二区在线播放| 成人自拍性视频| 美乳少妇欧美精品| 亚洲va电影大全| 青青a在线精品免费观看| 亚洲美女在线看| 青青在线视频一区二区三区| 欧美午夜精品久久久久久浪潮| 国产一区二区激情| 国产亚洲精品91在线| 国产精品综合网站| 亚洲欧美日韩国产精品| 一本色道久久综合狠狠躁篇怎么玩| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲最大的成人网| 亚洲第一区在线| 欧美有码在线观看| 亚洲欧洲国产一区| 亚洲天堂av在线免费| 亚洲精品国产精品国自产观看浪潮| 精品露脸国产偷人在视频| 亚洲大胆人体av| 亚洲国产精品视频在线观看| 日韩精品久久久久久福利| 欧美在线亚洲在线| 国产精品揄拍一区二区| 国产精品精品国产| 日韩美女激情视频| 精品无人区乱码1区2区3区在线| 欧美在线免费视频| 国产欧美日韩精品专区| 羞羞色国产精品| 国产精品一区二区三区在线播放| 国产91久久婷婷一区二区| 国产日韩欧美夫妻视频在线观看| 91av在线影院| 国产精品高潮在线| 亚洲最大av网站| 性欧美长视频免费观看不卡| 精品亚洲一区二区三区四区五区| 欧美成人合集magnet| 国产中文日韩欧美| 亚洲理论片在线观看| 久久久欧美精品| 国产精品成人av性教育| 亚洲成av人片在线观看香蕉| 久久人人爽亚洲精品天堂| 亚洲二区中文字幕| 国产精品久久久久久亚洲影视| 78色国产精品| 97精品久久久中文字幕免费| 91久久精品美女高潮| 日韩精品在线免费观看| 亚洲sss综合天堂久久| 亚洲国产精品va在线观看黑人| 久久夜色精品国产| 亚洲影院色无极综合| 日韩av一区在线| 不卡av日日日| 国产精品自产拍在线观看中文| 国产精品国产三级国产aⅴ9色| 亚洲福利视频专区| 欧美精品videos另类日本| 精品国产网站地址| 国产精品自产拍在线观看中文| 日韩在线视频一区| 欧美激情va永久在线播放| 日韩亚洲精品视频| 全球成人中文在线| 最近的2019中文字幕免费一页| 日本成人免费在线| 国产香蕉一区二区三区在线视频| 亚洲电影天堂av| 亚洲精品国产精品久久清纯直播| 超碰精品一区二区三区乱码| 欧美午夜精品久久久久久浪潮| 亚洲精品综合精品自拍| 成人黄色免费看| 疯狂蹂躏欧美一区二区精品| 国产精品久久久久久av福利| 2025国产精品视频| 国产成人福利视频| 国产精品一区二区三区在线播放| 国产精品美女主播| 亚洲精品久久久久久久久久久久久| 欧美激情在线播放| 日韩电影免费在线观看| 亚洲精品日产aⅴ| 国产日韩欧美成人| 欧美激情综合亚洲一二区| 国产成人精品av在线| 亚洲男人的天堂在线播放| 久久久精品视频成人| 欧美激情二区三区| 成人写真视频福利网| 欧美在线观看网址综合| 久久影院模特热| 成人免费网站在线| 欧美在线影院在线视频| 中文字幕免费精品一区| 2021久久精品国产99国产精品| 精品国偷自产在线视频99| 日韩精品免费观看| 国产精品青青在线观看爽香蕉| 九九热精品视频| 欧美成年人视频网站欧美| 97视频在线观看免费高清完整版在线观看| 亚洲国产天堂久久综合| 亚洲精品www久久久久久广东| 国产欧美日韩丝袜精品一区| 成人免费视频在线观看超级碰| 亚洲视频综合网| 亚洲欧美另类人妖| 久久国产视频网站| 国产精品91久久| 成人淫片在线看| 国产亚洲精品美女久久久| 亚洲精品国精品久久99热| 在线观看国产精品91| 欧美激情视频在线观看| www.久久久久| 国产精品久久久久久久app| 久久中文久久字幕| 国产精品永久免费| 亚洲欧美另类国产| 亚洲精品免费一区二区三区| 伊人久久免费视频| 久久国产精品久久国产精品| 久久久精品影院| 国产偷国产偷亚洲清高网站| 国产欧美最新羞羞视频在线观看| 亚洲欧美日韩精品久久| 欧美激情视频给我| 国产成人精彩在线视频九色| 亚洲wwwav| 亚洲精品成人久久| 91在线国产电影| 欧美精品video| 日本韩国欧美精品大片卡二| 青青a在线精品免费观看| 在线观看视频亚洲| 国产视频精品免费播放| www国产亚洲精品久久网站| 超碰精品一区二区三区乱码| 久久久久久亚洲精品中文字幕| 欧美黑人xxx| 国产成人综合精品| 国产亚洲视频中文字幕视频| 国产精品网站入口| 日韩免费看的电影电视剧大全| 久久国内精品一国内精品| 97视频色精品| 欧美寡妇偷汉性猛交| 欧美激情免费在线| 精品久久久免费| 国产女人精品视频| 亚洲色图偷窥自拍| 中国日韩欧美久久久久久久久| 欧美性videos高清精品| 国产日韩欧美自拍| 亚洲欧美精品suv| 久久久久久久久综合| 日韩亚洲综合在线| 国产精品国产亚洲伊人久久|