
//统计字符串长度,适用中文,字母,数字混编
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中文正则匹配 相对简单第二种 strlen 计算字符串长度 (中文长度算3个) mb_strlen 计算字符串长度 (中文长度算1个) 进行比较中文字符串截取(mb_substr)和获取中文字符串字数获取中文长度:mb_strlen()php 判断一个字符是不是中文
varchar存储规则:
40版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
50版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节
Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。
mb_substr("字符串",开始索引(int),结束索引(int),“utf-8”)
按照上面的写就是了
如果用substr来写的话 utf-8的格式一个中文占3个长度gbk和gb2312一个中文占2个长度
而mb_substr来写的话 不管什么格式 只要是占一个位置 都是算作一个长度
但是用mb_substr必须注意几点
在phpini中 就是php的配置文件中必须开启mb_substr这个符号 就是把前面份额分号给去掉
还有就是后面必须写上你的编码格式如“utf-8”或者gb2312之类的
如果你想用这个mb_substr的话 并且那个字符串中还有英文的话那是绝对会出错的
至于写的话 楼主自己写一下吧 查一下文档不久OK了吗 还要别人写出来 这点自学能力都没有
preg_match_all函数用来进行正在表达式匹配的,你的语句中是把$str拆分为字符,存放在$match数组里面,你在语句中增加下来的语句可以明白其功能:
print_r($match);
此函数的详细解释见官方资料:
>
function strLength($str,$charset='utf-8'){
if($charset=='utf-8') $str = iconv('utf-8','gb2312',$str);
$num = strlen($str);
$cnNum = 0;
for($i=0;$i<$num;$i++){
if(ord(substr($str,$i+1,1))>127){
$cnNum++;
$i++;
}
}
$enNum = $num-($cnNum2);
$number = ($enNum/2)+$cnNum;
return ceil($number);
}
测试:
$temp='我的我的我的我的1234cedede';
echo(strLength($temp,'gb2312'));
以上就是关于用PHP统计字符串长度全部的内容,包括:用PHP统计字符串长度、php 判断一个字符是不是中文、php中mysql汉字内容字段长度的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)