设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 1408|回复: 0
收起左侧

Utf-8、gb2312都支持的汉字截取

[复制链接]
发表于 2010-2-24 13:43:39 | 显示全部楼层 |阅读模式
&lt;?php<BR><BR>/***************************************************************************<BR>* cut_string.php<BR>* ------------------------------<BR>* Date : Jul 16, 2005<BR>* Copyright : none<BR>* Mail : <BR>*<BR>* 作用:截取中文字符.<BR>*<BR>*<BR>***************************************************************************/<BR><BR>function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')<BR>{<BR>if($code == 'UTF-8')<BR>{<BR>$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";<BR>preg_match_all($pa, $string, $t_string);<BR><BR>if(count($t_string[0]) - $start &gt; $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";<BR>return join('', array_slice($t_string[0], $start, $sublen));<BR>}<BR>else<BR>{<BR>$start = $start*2;<BR>$sublen = $sublen*2;<BR>$strlen = strlen($string);<BR>$tmpstr = '';<BR>for($i=0; $i&lt;$strlen; $i++)<BR>{<BR>if($i&gt;=$start &amp;&amp; $i&lt;($start+$sublen))<BR>{<BR>if(ord(substr($string, $i, 1))&gt;129) $tmpstr.= substr($string, $i, 2);<BR>else $tmpstr.= substr($string, $i, 1);<BR>} <BR>if(ord(substr($string, $i, 1))&gt;129) $i++;<BR>}<BR>if(strlen($tmpstr)&lt;$strlen ) $tmpstr.= "...";<BR>return $tmpstr;<BR>}<BR>}<BR><BR>?&gt;<BR><BR><BR>cut_str(字符串, 截取长度, 开始长度, 编码);<BR>编码默认为 utf-8<BR>开始长度默认为 0
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-4-17 03:22 , Processed in 0.061082 second(s), 9 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表