作者: | 来源:互联网 | 2023-08-31 20:07
导读:今天编程笔记来给各位分享关于php怎么查看字符串长度的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、PHP获取中英混合字符串长度的方法
2、用PHP统计字符串长度?
3、PHP怎么获取字符串长度?
PHP获取中英混合字符串长度的方法
今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了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
思想是用正则表达式将字符串分割成单个字符,并直接用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统计字符串长度?
PHP 计算字符串长度代码示例如下,具体逻辑在代码中。
?php
//统计字符串长度,适用中文,字母,数字混编
function get_strlength($str) {
//强字符串统一转换为utf-8格式
$encode = mb_detect_encoding( $str, array('ASCII','UTF-8','GB2312','GBK'));
if (!$encode =='UTF-8'){
$str = iconv('UTF-8',$encode,$str);
}
//初始化字符串长度
$count = 0;
//循环统计
for($i = 0; $i strlen($str); $i++){
//获取字符串首字母对应的ASCII值
$value = ord($str[$i]);
if($value 127) {
$count++;
if($value = 192 $value = 223){
$i++;
}elseif($value = 224 $value = 239){
$i = $i + 2;
}elseif($value = 240 $value = 247){
$i = $i + 3;
}else{
die('字符串异常!!');
}
}
$count++;
}
return $count;
}
//测试
echo get_strlength("中国人2015年的gdp为:6666");
//25
?
PHP怎么获取字符串长度?
PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:
(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;
(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。
结语:以上就是编程笔记为大家介绍的关于php怎么查看字符串长度的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。