首页  >  文章  >  后端开发  >  php字符串截长(支持中文)

php字符串截长(支持中文)

巴扎黑
巴扎黑原创
2016-11-23 14:41:01990浏览

<?php    
/**  
 * 字符串截长(支持中文)  
 * @author:zms  
 * @version:2011-7-27  
 */  
  
    /**  
     * 字符串截取  
     * @param object $str : 字符串(支持中文)  
     * @param object $start :截取开始位置  
     * @param object $length:截取结束位置  
     * @param object $encode [optional]:字符串编码  
     * @param object $input_encode [optional]:输入的文字的编码  
     * @return  
     */  
    function substring($str, $start, $length, $encode = &#39;utf-8&#39;, $input_encode = &#39;utf-8&#39;) {   
        //编码转换   
        $str = iconv($input_encode, $encode, $str);   
        //正则匹配   
        preg_match_all(getRege($encode), $str, $match);   
        //从数组取得数据,组成字符串   
        $slice = join("", array_slice($match[0], $start, $length));   
        return $slice;   
    }   
    /**  
     * 中文编码  
     * @param object $type  
     * @return  
     */  
    function getRege($type) {   
        $rege = "";   
        switch (strtolower($type)) {   
            case &#39;utf-8&#39;:   
                $rege = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";   
                break;   
            case &#39;gb2312&#39;:   
                $rege = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";   
                break;   
            case &#39;gbk&#39;:   
                $rege = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";   
                break;   
            case "big5":   
                $rege = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";   
                break;   
            default:   
                echo "charset error";   
                exit;   
        }   
        return $rege;   
    }   
?>

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn