php字符串截长(支持中文)_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > php字符串截长(支持中文)

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

 2012/3/23 23:50:28  zms198983  程序员俱乐部  我要评论(0)
  • 摘要:<?php/***字符串截长(支持中文)*@author:zms*@version:2011-7-27*//***字符串截取*@paramobject$str:字符串(支持中文)*@paramobject$start:截取开始位置*@paramobject$length:截取结束位置*@paramobject$encode[optional]:字符串编码*@paramobject$input_encode[optional]
  • 标签:支持中文 PHP 字符串
<?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 = 'utf-8', $input_encode = 'utf-8') {   
        //编码转换   
        $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 'utf-8':   
                $rege = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";   
                break;   
            case 'gb2312':   
                $rege = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";   
                break;   
            case 'gbk':   
                $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;   
    }   
?>  

?

发表评论
用户名: 匿名