/*
* 中文字符串截取,支持gb2312/gbk/utf-8/big5
*
* @param string $str 要截取的字串
* @param int $start 截取起始位置
* @param int $length 截取长度
* @param string $charset utf-8|gb2312|gbk|big5 编码
* @param string $suffixChars 后缀字符
* @param Boolean $suffix 是否加后缀
*/
public function csubstr($str, $start = 0, $length, $charset = 'gb2312', $suffixChars = '…', $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 . $suffixChars;
}
return $slice;
}
再
一个:
function cutstr( $string , $length , $dot = ' ...' ) {
if ( strlen ( $string ) <= $length ) {
return $string ;
}
$string = str_replace ( array ( '&' , '"' , '<' , '>' ), array ( '&' , '"' , '<' , '>' ), $string );
$strcut = '' ;
$n = $tn = $noc = 0;
while ( $n < strlen ( $string ) ) {
$t = ord ( $string [ $n ] );
if ( $t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1;
$n ++;
$noc ++;
} elseif (194 <= $t && $t <= 223) {
$tn = 2;
$n += 2;
$noc += 2;
} elseif (224 <= $t && $t < 239) {
$tn = 3;
$n += 3;
$noc += 2;
} elseif (240 <= $t && $t <= 247) {
$tn = 4;
$n += 4;
$noc += 2;
} elseif (248 <= $t && $t <= 251) {
$tn = 5;
$n += 5;
$noc += 2;
} elseif ( $t == 252 || $t == 253) {
$tn = 6;
$n += 6;
$noc += 2;
} else {
$n ++;
}
if ( $noc >= $length ) {
break ;
}
}
if ( $noc > $length ) {
$n -= $tn ;
}
$strcut = substr ( $string , 0, $n );
$strcut = str_replace ( array ( '&' , '"' , '<' , '>' ), array ( '&' , '"' , '<' , '>' ), $strcut );
return $strcut . $dot ;
}
分享到:
相关推荐
C#写的 GBK GB2312 UTF-8转换 功能简单,仅供学习
GB2312编码与utf-8编码的字符串的转换,主要使用windows api函数MultiByteToWideChar和WideCharToMultiByte,代码简洁,经测试可用
编码转换器 绿色版 gb2312 gbk utf-8 万能转换
本资源为GB2312转UTF-8的C语言代码,实现方式为查表的方式,提供了可以调用的接口,里面有makefile,用于别的平台自行修改。
GBK、UTF-8批量文件3秒快速转码工具(支持GBK,UTF-8免费转换),UTF-8/GBK编码在线转换工具,压缩包可以有多目录与文件,如目录中有图片不会转码,但是会随转码好的文件一起打包下载。 使用帮助 . 上传压缩包(仅支持zip...
UNICODE\Unicode,GBK,GB2312,UTF-8概念基础
GBK GB2312转UTF-8工具.可以批量地将文件编码进行转换.
GBK-GB2312-UTF-8编码批量转换
批量 convertz.rar GBK 转 UTF-8 gb2312 转 UTF-8 Iso-8959-1 转 UTF-8
可以实现编码转换,使用编码utf-8转换成gbk
一、各编码间的区别及故事来历 UTF-8:Unicode ...UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
请使用这款软件,直接将代码转换为UTF-8 注意: 1、xml不需要转换,因为xml默认是utf-8,在你新建的时候已经是正确的格式了 2、图片更不需要转换 3、bin目录,gen目录的直接忽略 4.只需要src目录的代码转换,请确保...
基于keil,单片机,实现gb2312和utf8编码的相互转换,实现web中文下发后台的封装转换。
批量文件转码工具(支持 GBK,UTF-8 转换)。 批量文件转码工具,支持GBK,UTF-8转换,window下面使用,亲测可以使用!!!!!!!!!! 批量 文件转码 工具 GBK UTF-8
1.GBK是在国家标准 GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准)。GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。 2.UTF-8 编码是用以解决国际上字符的一种多字节编码,它对...
直接在url中传递中文参数时,读到的中文都是乱码,那么我们应该怎么将这些参数转换呢,接下来与大家分享下将字符串转换成utf-8或者gb2312编码的参数的技巧
基于MFC CString的GBK与UTF-8编码转换,在网上找到一些代码都有问题,但都存在一些错误。现在改好了,与大家分享一下。 (MFC 非UNICODE)
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换
不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);
Recognize类判定指定文本文件为UTF-8还是GBK编码格式。