php 计算中英文混合字符串的长度

php 计算中英文混合字符串的长度
echo ccStrLen($str),'<hr>';
echo ccStrLeft($str,3);
function ccStrLeft($str,$len) #从左边截取中英文混合字符串
{
$ascLen=strlen($str);   if($ascLen<=$len) return $str;
$hasCC=ereg("[xA1-xFE]",$str); #同上
$hasAsc=ereg("[x01-xA0]",$str);
if(!$hasCC) return substr($str,0,$len);
if(!$hasAsc)
if($len & 0x01) #如果长度是奇数
return substr($str,0,$len+$len-2);
else
return substr($str,0,$len+$len);
$cind=0;$flag=0;
while($cind<$ascLen)
{
if(ord(substr($str,$cind,1))<0xA1) $flag++;
$cind++;
}
if($flag & 0x01)
return substr($str,0,$len);
else
return substr($str,0,$len-1);
}

function ccStrLen($str) #计算中英文混合字符串的长度
{
$ccLen=0;
$ascLen=strlen($str);
$ind=0;
$hasCC=ereg("[xA1-xFE]",$str); #判断是否有汉字
$hasAsc=ereg("[x01-xA0]",$str); #判断是否有ASCII字符
if($hasCC && !$hasAsc) #只有汉字的情况
return strlen($str)/2;
if(!$hasCC && $hasAsc) #只有Ascii字符的情况
return strlen($str);
for($ind=0;$ind<$ascLen;$ind++)
{
if(ord(substr($str,$ind,1))>0xa0)
{
$ccLen++;
$ind++;
}
else
{
$ccLen++;
}
}
return $ccLen;
}

function cs($str) 
{
    $ccLen=0;
    $ascLen=strlen($str);
    $ind=0;
    for($ind=0;$ind<$ascLen;$ind++)
    {
        if(ord(substr($str,$ind,1))>0xa0)
        {
            $ccLen++;
            $ind++;
        }
        else
        {
            $ccLen++;
        }
    }
    return $ccLen;
}

时间: 2024-10-31 19:13:46

php 计算中英文混合字符串的长度的相关文章

在javascript中如何得到中英文混合字符串的长度

 本文为大家介绍下Javascript中如何得到中英文混合字符串的长度,下面有个不错的教程,感兴趣的朋友可以参考下 有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度.    用的是正则表达式.     代码如下: var str = "坦克是tank的音译";  var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).leng

在javascript中如何得到中英文混合字符串的长度_javascript技巧

有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度. 用的是正则表达式. 复制代码 代码如下: var str = "坦克是tank的音译"; var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ; 我查了一下书,有点明白了: 西文常用字符集由空格" "(0x20)到"~"

iOS中如何判断中英文混合的字符长度_IOS

废话不多说,直接给大家贴代码了. 一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法 NSLog(@"--first-%i",[self convertToInt:@"123我爱你"]); //第二种方法 NSLog(@"--second--%ld",[self getToInt:@&

用C#截取指定长度的中英文混合字符串

字符串 我们常做的一件事情,就是在文章系统中,截取一定长度的文章标题,超过指定长度,就加"..." 如两个字符串:string str1 = "中国人要啊abc呀~";string str2 = "1中国人23456abc呀~"; 要截取后,输出: str1 = "中国人要...";str2 = "1中国人2..."; 即要把中英文混合的字符串,在截取后,长度要一致,即8个字节的长度(不包括三个点),而且不

计算中文混合字符串长度(一)

计算包含中文的混合字符串长度,一个中文.英文.数字 均为 1 function resolveContainCn($string, $charset = 'utf-8') { if ($string == '') { return ''; } if ($charset == 'utf-8') { $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xb

计算中文混合字符串长度(二)

计算含中文的混合字符串长度 将字符串转换为 一个中文为 1,一个英文.数字 为 0.5 ,取最大整数长度值,类似腾讯微博计算字数长度方式 function asGbkLength($str, $fromEncode = 'utf-8') { return ceil(strlen(mb_convert_encoding($str, 'gbk', $fromEncode))/2); } $str = 'abcd计算字符串长度12345'; echo $str; echo '<br>'; echo

PHP截取字符串长度(中英文混合字符串)

取部份字符串. 语法: string substr(string string, int start, int [length]); 返回值: 字符串 函数种类: 资料处理 内容说明 本函数将字符串 string 的第 start 位起的字符串取出 length 个字符.若 start 为负数,则从字符串尾端算起.若可省略的参数 length 存在,但为负数,则表示取到倒数第 length 个字符. 使用范例  代码如下 复制代码 <? echo substr("abcdef",

求正则表达式,限制允许中英文混合的用户名长度

问题描述 求正则表达式,限制用户名只能由中文或英文字母组成,关键是长度不超过7个汉字(或14个字母)的长度.也就是1个汉字算2个字母的长度:) 解决方案 解决方案二:[xa1-xffA-Za-z]{14}解决方案三:引用1楼shingoscar的回复: [xa1-xffA-Za-z]{14} 不行,你这个连中文都不认解决方案四:<asp:RegularExpressionValidatorID="RegularExpressionValidator1"runat="se

C#语言之“中英文混合字符串对齐”的方法【转】

参考自:(1)http://www.cnblogs.com/cnluoke/articles/1213398.html            (2)http://www.cnblogs.com/sql4me/archive/2009/11/16/1603996.html 方法一:将已有字符串组织成新字符串时填充 由于某一个字段,包含有汉字和数字.而一个汉字是两位占位符的大小,如果单从字符串长度来看,一个汉字的长度为1.假如按一个包含汉字字符串长度就 等于占位符大小(如果只包含字母和数字的字符串这