`
mr.zxing
  • 浏览: 70039 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

php 支持gb2312,gbk,utf-8,big5 中文截取方法

    博客分类:
  • php
 
阅读更多

/*  
 
* 中文截取,支持gb2312,gbk,utf-8,big5  
 
*  
 
* @param string $str 要截取的字串  
 
* @param int $start 截取起始位置  
 
* @param int $length 截取长度  
 
* @param string $charset utf-8|gb2312|gbk|big5 编码  
 
* @param $suffix 是否加尾缀  
 
*/
 
public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)  
 
{  
 
   if(function_exists("mb_substr"))  
 
   {  
 
       if(mb_strlen($str, $charset) <= $length) return $str;  
 
       $slice = mb_substr($str, $start, $length, $charset);  
 
   }  
 
   else
 
   {  
 
       $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";  
 
       $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";  
 
       $re['gbk']          = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";  
 
       $re['big5']          = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";  
 
       preg_match_all($re[$charset], $str, $match);  
 
       if(count($match[0]) <= $length) return $str;  
 
       $slice = join("",array_slice($match[0], $start, $length));  
 
   }  
 
   if($suffix) return $slice."…";  
 
   return $slice;  
 
}
 
分享到:
评论

相关推荐

    php中支持多种编码的中文字符串截取函数!

    /* * @todo 中文截取,支持gb2312,gbk,utf-8,big5 * * @param string $str 要截取的字串 * @param int $start 截取起始位置 * @param int $length 截取长度 * @param string $charset utf-...

    php截取字符串之截取utf8或gbk编码的中英文字符串示例

    同时,对于中文字符的处理,开发者应当考虑到不同的字符集和编码方式(如BIG5、GBK、GB2312等),可能会导致不同的计算结果,选择合适的处理策略。 为了编写健壮的代码,开发者可以通过多种方式测试和验证字符计数...

    php中计算中文字符串长度、截取中文字符串的函数代码

    另一个截取中文字符串的通用方法是`csubstr`函数,它可以处理不同的字符编码,如`utf-8`, `gb2312`, `gbk`, 和 `big5`。这个函数使用`mb_substr`函数(如果存在)来执行截取,或者使用正则表达式匹配和字符数组切片...

    php自动获取字符串编码函数mb_detect_encoding

    $encode = mb_detect_encoding($keytitle, array('GBK', 'UTF-8', 'ASCII', 'GB2312', 'BIG5'), true); ``` 这里的第三个参数`true`代表启用`strict`模式,它会更严格地检查编码,从而可能提高识别的准确性。但需要...

    php的GD库imagettftext函数解决中文乱码问题

    对于处理中文字符串,了解不同的字符编码(如GBK、GB2312、Big5、UTF-8等)及其转换至关重要。`iconv()`函数是PHP中进行字符编码转换的利器,它可以有效地解决因编码不匹配导致的乱码问题。在实际开发中,确保正确...

    经典php冒泡排序面试题

    `CSubstr`函数是更为通用的多字节字符集字符串截取函数,支持GB2312、GBK、UTF-8和BIG5等编码。首先检查是否支持`mb_substr`函数,如果有则直接使用,否则使用正则表达式匹配字符集的特征,进行截取。 这些函数的...

    THINKPHP截取中文字符串函数实例代码

    正则表达式部分是针对不同编码(如UTF-8、GB2312、GBK和Big5)设计的,用来匹配特定编码下的单个字符。通过`preg_match_all`匹配所有符合规则的字符,并使用`array_slice`来获取指定范围内的字符,然后用`join`连接...

    thinkphp中字符截取函数msubstr()用法分析

    也可以指定为其他字符集,如gb2312、gbk、big5等。 - $suffix=true:是否在截取后的字符串末尾添加省略号,默认为true表示添加。如果设置为false,则不添加。 在实际使用中,msubstr()函数常被用在模板标签中,如:...

    ThinkPHP 模板substr的截取字符串函数详解

    `msubstr`函数的主要目的是兼容不同的多字节字符集(如UTF-8、GBK、GB2312等),确保在没有`mb_substr`或`iconv_substr`函数可用的情况下也能正常工作。以下是`msubstr`函数的详细说明: ```php function msubstr($...

    ThinkPHP的截取字符串函数无法显示省略号的解决方法

    在实现自定义的msubstr函数时,需要处理不同字符集的编码规则,包括UTF-8、GBK、GB2312和Big5等常见的编码方式。这里使用了正则表达式来匹配和处理不同编码规则的字符串,然后根据传入的字符集参数进行匹配。使用...

    ecmall插件

    $this-&gt;charset = in_array($data['content_charset'], array('utf-8', 'gbk', 'big5')) ? $data['content_charset'] : CHARSET; if ($data['type'] == 'goods') //调用数据的类型为商品 { $this-&gt;_x_mod = &m('...

Global site tag (gtag.js) - Google Analytics