时时商务社区
标题:
PHP UTF8中文字符截断函数代码
[打印本页]
作者:
新格网络
时间:
2018-2-14 08:27
php中英文混合字符截断不乱码函数(utf8)
[U]复制代码[/U] 代码如下:
//utf8格式下的中文字符截断
//$sourcestr 是要处理的字符串
//$cutlength 为截取的长度(即字数)
//$addstr 超过长度时在尾处加上的字符
function cut_str($sourcestr, $cutlength, $addstr='...'){
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字符串的字节数
while (($n=224){ //如果ASCII位高与224,
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1
}elseif ($ascnum>=192){ //如果ASCII位高与192,
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2
$n++; //字串长度计1
}elseif ($ascnum>=65 && $ascnum$cutlength){
$returnstr = $returnstr . $addstr;//超过长度时在尾处加上的字符
}
return $returnstr;
}
[U]复制代码[/U] 代码如下:
$all_len)
{
return $str;
}
for($i = 0;$i 127)
{
$i += 3;
}else{
$i += 1;
}
$cur_len ++;
}
$start_pos = $i;
$temp_pos = $cur_len;
for(;$cur_len - $temp_pos = $all_len)
break;
if (ord($str[$i]) > 127)
{
$i += 3;
}else{
$i += 1;
}
$cur_len ++;
}
$end_pos = $i;
return substr($str,$start_pos,$end_pos);
}
?>
其实,PHP原生就有多charset下字符截取方案,额,所以就是这个样子...囧..
Multibyte String Functions函数族中,
string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] ) 用来字符串截取
int mb_strlen ( string $str [, string $encoding ] ) 返回字符串长度
....
详细请查看PHP手册
您可能感兴趣的文章:
MSSQL 将截断字符串或二进制数据问题的解决方法
PHP在字符断点处截断文字的实现代码
js中根据字数截取字符串,不能截断url
C# double和decimal数据类型以截断的方式保留指定的小数位数
c#完美截断字符串代码(中文+非中文)
oracle中截断表的使用介绍
PHP截断标题且兼容utf8和gb2312编码
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
php使用iconv中文截断问题的解决方法
js实现文字截断功能
欢迎光临 时时商务社区 (http://bbs.4435.cn/)
Powered by Discuz! X3.2