PHP字符截取函数,兼容各类gbk,utf-8编码
在PHP中字符截取函数substr只能截取全英文才不会出现乱码如果里面有中文肯定是无法截取的,下面小编来给大家介绍两个兼容各类gbk,utf-8编码字符串截取函数,实例代码如下:
function CsubStrPro( $str , $start , $length , $charset = "utf-8" , $suffix = false) { if (function_exists ( "mb_substr" )) return mb_substr ( $str , $start , $length , $charset ); $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 ); $slice = join ( "" , array_slice ( $match [0], $start , $length ) ); if ( $suffix ) return $slice . "…" ; return $slice ; }实例代码二:
function subString_UTF8( $str , $start , $lenth ) { $len = strlen ( $str ); $r = array (); $n = 0; $m = 0; for ( $i = 0; $i < $len ; $i ++) { $x = substr ( $str , $i , 1); $a = base_convert (ord( $x ), 10, 2); $a = substr ( '00000000' . $a , -8); if ( $n < $start ){ if ( substr ( $a , 0, 1) == 0) { } elseif ( substr ( $a , 0, 3) == 110) { $i += 1; } elseif ( substr ( $a , 0, 4) == 1110) { $i += 2; } $n ++; } else { if ( substr ( $a , 0, 1) == 0) { $r [ ] = substr ( $str , $i , 1); } elseif ( substr ( $a , 0, 3) == 110) { $r [ ] = substr ( $str , $i , 2); $i += 1; } elseif ( substr ( $a , 0, 4) == 1110) { $r [ ] = substr ( $str , $i , 3); $i += 2; } else { $r [ ] = '' ; } if (++ $m >= $lenth ){ break ; } } } return $r ; } // End subString_UTF8; // End String由于此函数返回的是一个数组,因此要配合join函数来显示字符串:join('',subString_UTF8($str, $start, $lenth));,在页面显示的时候还可以在此语句后面连一个"..."
查看更多关于PHP字符截取函数,兼容各类gbk,utf-8编码 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30684