截取的变量中文字符
一般来说,要截取的变量来自Mysql,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点.4 i5 e8 Z. I% G$ d. E. ~+ z6 O
3 {* Q. p, x7 u! v' _PHP代码:--------------------------------------------------------------------------------
3 ^& e9 C, i& n L$ ^7 k7 P& s7 i: o
<?PHP
# O* J- H; M* |+ k$str="这个字符好长呀,^_^";
3 w* P1 c4 X v" f$Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符...5 V5 Q- `; }; B
Echo "$Short_Str";
! N2 r* O9 B, P* P7 s' [Function csubstr($str,$start,$len)
# j/ I `0 [2 w1 f2 a8 J{ 9 ~6 G0 v8 t- G3 f+ J
$strlen=strlen($str);
4 ]0 G/ c( j, _0 S% s9 m$clen=0; 0 | k+ V, B2 T) k- Z0 j0 R# z
for($i=0;$i<$strlen;$i++,$clen++) - f9 F! V' n% ^! x$ M% ]5 S
{ , W- \( b3 [' P) x0 F( y: C
if ($clen>=$start+$len) 3 Q6 M7 P0 w1 ?: E8 w% X6 ~9 G
break; 7 a; C5 ?0 t7 o8 ~4 K" ^1 z" J
if(ord(substr($str,$i,1))>0xa0) 3 ~* t+ a6 T. g
{ 9 t! r# Y# d( A; L: K
if ($clen>=$start)
7 b7 v+ f' n3 n" b/ U" K1 v! Z$tmpstr.=substr($str,$i,2);
3 t& X* P( P. {# Z: F+ m f$i++; . U( A: C* e! a9 `1 P9 p
} U& V) V( S6 N& H( V8 W
else
T; |7 p. `. m{
" y2 z) {. c4 o3 [9 cif ($clen>=$start) : U" P, B& D5 O( V( N& |
$tmpstr.=substr($str,$i,1);
! C8 R' H1 G$ ~0 Y2 S% D. f}
! ]5 A% V; D" A# F+ N} 5 y0 f8 @5 L; A
2 k6 f7 q" u. t8 Q% Y& I( rreturn $tmpstr;
" K! |7 }6 H/ w% h2 J}
4 G1 c% J7 o6 ] w, TFunction showShort($str,$len) 7 r- V: B3 d: ^9 z; G
{ }, {2 p- b# J x
$tempstr = csubstr($str,0,$len);
: h* w7 N7 B# n Sif ($str<>$tempstr)
$ y$ n9 Z' Z9 q) q$tempstr .= "..."; //要以什么结尾,修改这里就可以.
6 F% y) _3 Z# w
, O4 ?& X7 W3 h& B! | E% Q5 kreturn $tempstr; ( S5 Z: I! p! ?1 W4 y% X
}