首页 »PHP教程 » php截取汉字:PHP汉字的截取解决思路方法 »正文
php截取汉字:PHP汉字的截取解决思路方法
来源: 发布时间:星期一, 2009年1月12日 浏览:28次 评论:0
在每种语言中 ![](/icons/6268dou.gif) 都会遇到汉字 ![](/icons/6268de.gif) 截取 ![](/icons/6268dou.gif) 原因英文字母占 ![](/icons/6268yi.gif) 个字节 ![](/icons/6268dou.gif) 汉字占2个字节 ![](/icons/6268dou.gif) ![](/icons/6268yi.gif) 般 ![](/icons/6268de.gif) ![](/icons/6268hanshu.gif) 中都是对单个字节 ![](/icons/6268de.gif) ![](/icons/6268dou.gif) 就是说按照英文截取 ![](/icons/6268de.gif) ![](/icons/6268dou.gif) 当遇到汉字时可能截取 ![](/icons/6268yi.gif) 半 ![](/icons/6268dou.gif) 就会出现乱码 ![](/icons/6268dou2.gif) 下面是php ![](/icons/6268de.gif) 解决方案 ![](/icons/6268dou.gif) 其他语言类似 ![](/icons/6268dou2.gif) Java代码 function msubstr($str, $start, $len){ $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i ){
(ord(substr($str, $i, 1)) > 0xa0){ $tmpstr .= substr($str, $i, 2); $i ; }![](/icons/6268else.gif) $tmpstr .= substr($str, $i, 1); }
$tmpstr; } function msubstr($str, $start, $len){ $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i ){
(ord(substr($str, $i, 1)) > 0xa0){ $tmpstr .= substr($str, $i, 2); $i ; }![](/icons/6268else.gif) $tmpstr .= substr($str, $i, 1); }
$tmpstr; } 在smarty模板中 ![](/icons/6268dou.gif) 经常用到汉字 ![](/icons/6268de.gif) 截取 ![](/icons/6268dou.gif) 需要修改truncate ![](/icons/6268hanshu.gif) 或是自己增加 ![](/icons/6268hanshu.gif) ![](/icons/6268dou.gif) 下面 ![](/icons/6268de.gif) 代码是增加 ![](/icons/6268de.gif) ![](/icons/6268hanshu.gif) : Java代码 function smarty_mod ier_cntruncate($ , $strlen = 20, $etc = '...', $keep_first_style = false) $strlen = $strlen*2; $ = trim($ );
( strlen($ ) <= $strlen ) {
$ ; } $str = strip_tags($ ); $j = 0; for($i=0;$i<$strlen;$i ) {
(ord(substr($str,$i,1))>0xa0) $j ; }
($j%2!=0) $strlen ; $rstr=substr($str,0,$strlen);
(strlen($str)>$strlen) {$rstr .= $etc;}
( $keep_first_style true && ereg('^<(.*)>$',$ ) ) {
( strlen($str) <= $strlen ) {
$ ; } $start_pos = strpos($ ,substr($str,0,4)); $end_pos = strpos($ ,substr($str,-4)); $end_pos = $end_pos+4; $rstr = substr($ ,0,$start_pos) . $rstr . substr($ ,$end_pos,strlen($ )); }
$rstr; function smarty_mod ier_cntruncate($ , $strlen = 20, $etc = '...', $keep_first_style = false) { $strlen = $strlen*2; $ = trim($ );
( strlen($ ) <= $strlen ) {
$ ; } $str = strip_tags($ ); $j = 0; for($i=0;$i<$strlen;$i ) {
(ord(substr($str,$i,1))>0xa0) $j ; }
($j%2!=0) $strlen ; $rstr=substr($str,0,$strlen);
(strlen($str)>$strlen) {$rstr .= $etc;}
( $keep_first_style true && ereg('^<(.*)>$',$ ) ) {
( strlen($str) <= $strlen ) {
$ ; } $start_pos = strpos($ ,substr($str,0,4)); $end_pos = strpos($ ,substr($str,-4)); $end_pos = $end_pos+4; $rstr = substr($ ,0,$start_pos) . $rstr . substr($ ,$end_pos,strlen($ )); }
$rstr; } 使用方法介绍说明:<{$kjswsList[kjswsCount].topic|cntruncate:18:"...":true}> 18为汉字 ![](/icons/6268de.gif) 个数 ![](/icons/6268dou.gif) 不是字节数
相关文章
读者评论
发表评论
|
|