php支持gb2312,uft-8中英文字符截取函数
<?php //截取gb2312中文字符串 function mysubstr( $str , $start , $len ) { $tmps 教程tr = "" ; $strlen = $start + $len ; for ( $i = 0; $i < $strlen ; $i ++) { if (ord( substr ( $str , $i , 1)) > 0xa0) { $tmpstr .= substr ( $str , $i , 2); $i ++; } else $tmpstr .= substr ( $str , $i , 1); } return $tmpstr ; } ?> <?php //截取utf8字符串 function utf8substr( $str , $from , $len ) { return preg_replace( '#^(?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,' . $from . '}' . '((?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,' . $len . '}).*#s' , '$1' , $str ); } ?>把上面两个例子整合了
/* utf-8、gb2312都支持的汉字截取函数 cut_str(字符串, 截取长度, 开始长度, 编码); 编码默认为 utf-8 开始长度默认为 0 */ function cut_str( $string , $sublen , $start = 0, $code = 'utf-8' ) { if ( $code == 'utf-8' ) { $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]/" ; preg_match_all( $pa , $string , $t_string ); if ( count ( $t_string [0]) - $start > $sublen ) return join( '' , array_slice ( $t_string [0], $start , $sublen )). "..." ; return join( '' , array_slice ( $t_string [0], $start , $sublen )); } else { $start = $start *2; $sublen = $sublen *2; $strlen = strlen ( $string ); $tmpstr = '' ; for ( $i =0; $i < $strlen ; $i ++) { if ( $i >= $start && $i < ( $start + $sublen )) { if (ord( substr ( $string , $i , 1))>129) { $tmpstr .= substr ( $string , $i , 2); } else { $tmpstr .= substr ( $string , $i , 1); } } if (ord( substr ( $string , $i , 1))>129) $i ++; } if ( strlen ( $tmpstr )< $strlen ) $tmpstr .= "..." ; return $tmpstr ; } } $str = "abcd需要截取的字符串" ; echo cut_str( $str , 8, 0, 'gb2312' ); ?>
查看更多关于php支持gb2312,uft-8中英文字符截取函数 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30766