zoukankan      html  css  js  c++  java
  • PHP截取中英文混合字符

    <?php
    
    ////////////////////////////////////////////////////////////////////
    // PHP截取中英文及标点符号混合的字符串函数(绝对不会出现乱码)
    // 本程序在utf-8、gb2312中测试通过。使用者自行测试big5。
    // 函数 left( 源字符串, 截取指定的字符串个数, 编码(可省略,默认为utf-8) )
    ////////////////////////////////////////////////////////////////////
    
    function left($str, $len, $charset="utf-8")
    {
        //如果截取长度小于等于0,则返回空
        if( !is_numeric($len) or $len <= 0 )
        {
            return "";
        }
    
        //如果截取长度大于总字符串长度,则直接返回当前字符串
        $sLen = strlen($str);
        if( $len >= $sLen )
        {
            return $str;
        }
     
        //判断使用什么编码,默认为utf-8
        if ( strtolower($charset) == "utf-8" )
        {
            $len_step = 3; //如果是utf-8编码,则中文字符长度为3  
        }else{
            $len_step = 2; //如果是gb2312或big5编码,则中文字符长度为2
        } 
    
        //执行截取操作
        $len_i = 0; 
        //初始化计数当前已截取的字符串个数,此值为字符串的个数值(非字节数)
        $substr_len = 0; //初始化应该要截取的总字节数
    
        for( $i=0; $i < $sLen; $i++ )
        {
            if ( $len_i >= $len ) break; //总截取$len个字符串后,停止循环
            //判断,如果是中文字符串,则当前总字节数加上相应编码的中文字符长度
            if( ord(substr($str,$i,1)) > 0xa0 )
            {
                $i += $len_step - 1;
                $substr_len += $len_step;
            }else{ //否则,为英文字符,加1个字节
                $substr_len ++;
            }
        $len_i ++;
        }
        $result_str = substr($str,0,$substr_len );
        return $result_str;
    }
    
    ////////////////////////////////////////////////////////////////////
    // 调用示例
    ////////////////////////////////////////////////////////////////////
    $str = "空格 也算一个字符"; 
    echo "截取后的字符串:".left($str,14); 
    
    ?>                                    
      
      
  • 相关阅读:
    取消a标签的页面跳转
    js 获取元素内部文本
    彻底取消Myeclipse对js文件的校验
    控制流程之if判断
    格式化的三种输出方式和基本运算符以及他们的优先级
    解压缩和python如何与用户交互
    数据类型基础和各种数据类型
    花式赋值和注释
    变量 及其命名和使用规范
    进入的python世界。了解执行python的交互方式和常用开发工具
  • 原文地址:https://www.cnblogs.com/whoamme/p/3190581.html
Copyright © 2011-2022 走看看