/*
* 中文截取,支持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;
}
分享到:
相关推荐
/* * @todo 中文截取,支持gb2312,gbk,utf-8,big5 * * @param string $str 要截取的字串 * @param int $start 截取起始位置 * @param int $length 截取长度 * @param string $charset utf-...
同时,对于中文字符的处理,开发者应当考虑到不同的字符集和编码方式(如BIG5、GBK、GB2312等),可能会导致不同的计算结果,选择合适的处理策略。 为了编写健壮的代码,开发者可以通过多种方式测试和验证字符计数...
另一个截取中文字符串的通用方法是`csubstr`函数,它可以处理不同的字符编码,如`utf-8`, `gb2312`, `gbk`, 和 `big5`。这个函数使用`mb_substr`函数(如果存在)来执行截取,或者使用正则表达式匹配和字符数组切片...
$encode = mb_detect_encoding($keytitle, array('GBK', 'UTF-8', 'ASCII', 'GB2312', 'BIG5'), true); ``` 这里的第三个参数`true`代表启用`strict`模式,它会更严格地检查编码,从而可能提高识别的准确性。但需要...
对于处理中文字符串,了解不同的字符编码(如GBK、GB2312、Big5、UTF-8等)及其转换至关重要。`iconv()`函数是PHP中进行字符编码转换的利器,它可以有效地解决因编码不匹配导致的乱码问题。在实际开发中,确保正确...
`CSubstr`函数是更为通用的多字节字符集字符串截取函数,支持GB2312、GBK、UTF-8和BIG5等编码。首先检查是否支持`mb_substr`函数,如果有则直接使用,否则使用正则表达式匹配字符集的特征,进行截取。 这些函数的...
正则表达式部分是针对不同编码(如UTF-8、GB2312、GBK和Big5)设计的,用来匹配特定编码下的单个字符。通过`preg_match_all`匹配所有符合规则的字符,并使用`array_slice`来获取指定范围内的字符,然后用`join`连接...
也可以指定为其他字符集,如gb2312、gbk、big5等。 - $suffix=true:是否在截取后的字符串末尾添加省略号,默认为true表示添加。如果设置为false,则不添加。 在实际使用中,msubstr()函数常被用在模板标签中,如:...
`msubstr`函数的主要目的是兼容不同的多字节字符集(如UTF-8、GBK、GB2312等),确保在没有`mb_substr`或`iconv_substr`函数可用的情况下也能正常工作。以下是`msubstr`函数的详细说明: ```php function msubstr($...
在实现自定义的msubstr函数时,需要处理不同字符集的编码规则,包括UTF-8、GBK、GB2312和Big5等常见的编码方式。这里使用了正则表达式来匹配和处理不同编码规则的字符串,然后根据传入的字符集参数进行匹配。使用...
$this->charset = in_array($data['content_charset'], array('utf-8', 'gbk', 'big5')) ? $data['content_charset'] : CHARSET; if ($data['type'] == 'goods') //调用数据的类型为商品 { $this->_x_mod = &m('...