/**
*
* 中英混合字符串长度判断
* @param unknown_type $str
* @param unknown_type $charset
*/
functionstrLength($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- ($cnNum* 2);
$number= ($enNum/ 2) +$cnNum;
returnceil($number);
}
/**
*
* 中英混合的字符串截取
* @param unknown_type $sourcestr
* @param unknown_type $cutlength
*/
functioncut_str($sourcestr,$cutlength) {
$returnstr=''
$i= 0;
$n= 0;
$str_length=strlen($sourcestr);//字符串的字节数
while( ($n<$cutlength)and($i<=$str_length) ) {
$temp_str=substr($sourcestr,$i, 1 );
$ascnum= Ord ($temp_str);//得到字符串中第$i位字符的ascii码
if($ascnum>= 224)//如果ASCII位高与224,
{
$returnstr=$returnstr.substr($sourcestr,$i, 3 );//根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+ 3;//实际Byte计为3
$n++;//字串长度计1
}elseif($ascnum>= 192)//如果ASCII位高与192,
{
$returnstr=$returnstr.substr($sourcestr,$i, 2 );//根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+ 2;//实际Byte计为2
$n++;//字串长度计1
}elseif($ascnum>= 65 &&$ascnum<= 90)//如果是大写字母,
{
$returnstr=$returnstr.substr($sourcestr,$i, 1 );
$i=$i+ 1;//实际的Byte数仍计1个
$n++;//但考虑整体美观,大写字母计成一个高位字符
}else//其他情况下,包括小写字母和半角标点符号,
{
$returnstr=$returnstr.substr($sourcestr,$i, 1 );
$i=$i+ 1;//实际的Byte数计1个
$n=$n+ 0.5;//小写字母和半角标点等与半个高位字符宽...
}
}
if($str_length>$cutlength) {
$returnstr=$returnstr."...";//超过长度时在尾处加上省略号
}
return$returnstr;
}
| 代码如下 | 复制代码 |
摩托车销售模拟器内置菜单中文版
摩托车出售模拟器,又名摩托车销售模拟器,这是一个以摩托车销售
船舶模拟2020最新版
船舶模拟2020是玩法非常有意思的模拟驾驶游戏,高清3d画质
油管主播的生活2内置菜单版
油管主播的生活2内置菜单版是一款模拟养成类游戏,在这里你将体
网吧老板模拟器2手机版
网吧老板模拟器2是非常受欢迎的模拟经营题材手游,在原本的基础
美国警察模拟器巡警2024最新版
美国警察模拟器是一款好玩的模拟手游,游戏中你将扮演一位警察,