首頁 php教程 php手册 php使用strlen()判断中文汉字字符串长度

php使用strlen()判断中文汉字字符串长度

Jun 02, 2016 am 09:14 AM

用strlen()函数可以简单模糊的判断字符长度了,像如果你是汉字与拼音或编码不一样使用用strlen()函数计算出来的都不一样,下面我来给大家介绍一下用strlen()函数的使用方法吧.

我们经常会用到了解字符串长度的时候,在PHP里,可以使用strlen()函数来实现,使用方法如下.

PHP strlen() 函数定义和用法

strlen() 函数返回字符串的长度。

语法:strlen(string)

参数:string

描述:必需,规定要检查的字符串.

php实例代码如下:

<?php 
echo strlen("Hello world!");
登入後複製

//输出:12

那么对于中文怎么处理,PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节,例:

$enStr = 'Hello,China!';echo strlen($enStr); // 输出:12

而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8,utf-8能兼容更多的字符,所以受到很多站长的喜爱,gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异.

gbk编码下每个中文字符所占字节为2,代码如下:

$zhStr = '您好,中国!';echo strlen($zhStr); // 输出:12

utf-8编码下每个中文字符所占字节为3,代码如下:

$zhStr = '您好,中国!';echo strlen($zhStr); // 输出:18

那么如何计算这组中文字符串的长度呢?有人可能会说gbk下获取中文字符串长度除以2,utf-8编码下除以3不就行了吗?但是您要考虑字符串并不老实,99%的情况会以中英混合的情况出现。

这是WordPress中的一段代码,主要思想就是先用正则将字符串分解为个体单元,然后再计算单元的个数即字符串的长度,代码如下,只能处理utf-8编码下的字符串:

$zhStr = &#39;您好,中国!&#39;; 
$str = &#39;Hello,中国!&#39;; 
// 计算中文字符串长度 
function utf8_strlen($string = null) { 
// 将字符串分解为单元 
preg_match_all("/./us", $string, $match); 
// 返回单元个数 
return count($match[0]); 
} 
echo utf8_strlen($zhStr); // 输出:6 
echo utf8_strlen($str); // 输出:9
登入後複製

下面是补充,准确计算字符个数和计算字节数的区别,代码如下:

/假设当前页面编码为GBK

<?php 
$str="中国abc"; 
echo strlen($str); //返回7,因为 GBK编码每个中文两个字节,strlen是返回字符串所占的字节长度。 
echo "<hr>"; 
echo iconv_strlen($str,"GBK"); //返回5.iconv_strlen 是统计字符串的字符数量 
 
//或者这么写 
<?php 
$biaoti="中华人民共和国"; 
$zijie=strlen($biaoti); 
echo $zijie."<br>"; //<br>  换行
登入後複製
//假设当前页面编码为UTF-8 
<?php 
$str="中国abc"; 
echo strlen($str); //返回9,因为 UTF-8编码每个中文三个字节,strlen是返回字符串所占的字节长度。 
echo "<hr>"; 
echo iconv_strlen($str,"UTF-8"); //返回5.iconv_strlen 是统计字符串的字符数量
登入後複製

iconv_strlen 是无论是何种编码,均能计算准确字符个数。

//假设当前页面编码为GBK

<?php 
$str="中国abc"; 
echo strlen($str); //返回7,因为 GBK编码每个中文两个字节,strlen是返回字符串所占的字节长度。 
echo "<hr>"; 
echo iconv_strlen($str,"GBK"); //返回5.iconv_strlen 是统计字符串的字符数量
登入後複製

//假设当前页面编码为UTF-8

<?php 
$str="中国abc"; 
echo strlen($str); //返回9,因为 UTF-8编码每个中文三个字节,strlen是返回字符串所占的字节长度。 
echo "<hr>"; 
echo iconv_strlen($str,"UTF-8"); //返回5.iconv_strlen 是统计字符串的字符数量
登入後複製

iconv_strlen 是无论是何种编码,均能计算准确字符个数.


本文链接:

收藏随意^^请保留教程地址.

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)