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

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

WBOY
WBOYOriginal
2016-06-02 09:14:022663browse

用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 是无论是何种编码,均能计算准确字符个数.


本文链接:

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn