PHP 统计中文字符串的长度

中文网站一般会选择两种编码:gbk/gb2312或是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 = ‘您好,中国!’;
$str = ‘Hello,中国!’;
// 计算中文字符串长度
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

下面我封装了一个函数准确计算中文字符串的长度:

function count_strlen($string = null)
{
    $fileType = mb_detect_encoding($string , array(‘UTF-8‘,‘GBK‘,‘LATIN1‘,‘BIG5‘)) ; //判断字符串中文编码的类型

    $length = iconv_strlen($string,$fileType);//根据字符编码计算字符串长度

    return $length;
}

$str = "中文45汶";
$len = count_strlen($str);
echo $len; //输出5
时间: 2024-11-03 21:01:49

PHP 统计中文字符串的长度的相关文章

php中计算中文字符串长度、截取中文字符串

在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务器,则只要在php.ini中开启即可.如果是用的虚拟主机,而服务器又没有开启这方面的函数的话,那就需要我们自己写出点适合咱国情的函数来了. 以下几个函数用起来颇为顺手的.不过要知道,得在utf-8环境下使用. header

php截取中文字符串,英文字符串,中英文字符串长度的方法

今天学习了php函数截取中文字符串,英文字符串,中英文字符串的函数使用方法.对中英文截取方法不理解,此处先做记录. PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节.例: $enStr = ‘Hello,China!’;echo strlen($enStr); // 输出:12 而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8.utf-8能兼容更多的字符,所以受到很多站长的喜爱.gbk与u

PHP计算中文字符串长度 、截取对应中文字符串

PHP计算字符串长度     及其   截取对应中文字符串 计算字符长度: $gouWu = '美日汇http://www.hnzyxok.com/'; echo mb_strlen($gouWu,'utf-8') ;    //输出的结果是26,里面包含了中文字母符号的计算,在该函数加上 UTF-8行  ,否则算出来的就是32(一个中文对应的长度是3) 对应截取中文: echo mb_substr($gouWu,0,10,'utf-8').;     //从$gouWu变量中对应取10个字符,

php中的中文字符串长度计算以及截取

一.中文字符串截取:mb_substr() mb_substr($str, $start, $length, $encoding); $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encoding,网页编码,如utf-8,GB2312,GBK 例: $str = "这个字符串是我想要截取的"; 截取"这个字"; echo mb_substr($str,0,3,"utf-8"); 二.中文字符串长

Lua实现计算 UTF8 字符串的长度,每一个中文算一个字符

-- 计算 UTF8 字符串的长度,每一个中文算一个字符 -- @function [parent=#string] utf8len -- @param string input 输入字符串 -- @return integer#integer  长度 计算 UTF8 字符串的长度,每一个中文算一个字符 local input = "你好World" print(string.utf8len(input)) -- 输出 7 function string.utf8len(input)

统计字符串的长度

统计字符串的长度 [[email protected] ~]$ FREDDY=freddy[[email protected] ~]$ echo $FREDDYfreddy 方法一:通过echo ${#string}的方式(注意:这里的string是该字符串的变量名) [[email protected] ~]# echo ${#FREDDY}6 方法二: [[email protected] ~]# echo $(expr length "$FREDDY")6 方法三: [[emai

java 判断含有中文的字符串的长度

public static boolean isLetter(char c) { int k = 0x80; return c / k == 0 ? true : false; } /** * 判断字符串是否为空 * @param str * @return */ public static boolean isNull(String str){ if(str==null||str.trim().equals("")||str.trim().equalsIgnoreCase("

获得字符串实际长度,中文2,英文1 js截取字符串,中英文都能用

var GetLength = function (str) { ///<summary>获得字符串实际长度,中文2,英文1</summary> ///<param name="str">要获得长度的字符串</param> var realLength = 0, len = str.length, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCo

PHP 中如何正确统计中文字数

PHP 中如何正确统计中文字数?这个是困扰我很久的问题,PHP 中有很多函数可以计算字符串的长度,比如下面的例子,分别使用了 strlen,mb_strlen,mb_strwidth 这个三个函数去测试统计字符串的长度,看看把中文算成几个字节: echo strlen("你好ABC") . ""; # 输出 9 echo mb_strlen("你好ABC", 'UTF-8') . ""; # 输出 5 echo mb_strw