您正在使用IPV4(3.236.253.192)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器 行情 简化版
文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】云产品限时秒杀,爆款1核2G云服务       [公益] 节省一分零钱 献出一份爱心 温暖世间真情      
虚位以待
2021年 冬至节 56
2021年 圣诞节 60
2022年 元 旦 67
2022年 春 节 98
 
  • 本类新增
    本类热门文章
    您现在的位置:首页 >> PHP >> 内容
    php中英文混合字符截断不乱码函数(utf8)
    内容摘要: //utf8格式下的中文字符截断//$sourcestr是要处理的字符串//$cutlength为截取的长度(即字数)//$addstr超过长度时在尾处加上的字符functioncut_str($sourcestr,$cutlength,$addstr='...'){$returnstr='';$i=0;$n=0;$str_length=strlen($so......
    //utf8格式下的中文字符截断

    //$sourcestr是要处理的字符串

    //$cutlength为截取的长度(即字数)

    //$addstr超过长度时在尾处加上的字符

    functioncut_str($sourcestr,$cutlength,$addstr='...'){

    $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.$addstr;//超过长度时在尾处加上的字符

    }

    return$returnstr;

    }

    版权声明:本内容来源于互联网,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
    上一篇:php根据身份证号码计算年龄的实例代码 下一篇:PHP验证信用卡卡号是否正确函数
    发布日期:2021/9/26
    手机扫二维码直达本页
    发布时间:10:30:26
    点击:461
    录入:齐天大圣
    相关文章
    Baidu
    YiJiaCMS 6.0.6.10688 Build 21.10.13(MSSQL) 闽ICP备05000814号-1
    本空间由景安网络提供,百度云加速提供加速防护
    ©2000-2021