php中截取字符串支持utf-8

2018-09-07 15:04

阅读:349

  截取字符串
<?php
$string=2006年4月我又长大了一岁!;
echosubstr($string,1)....;
//截取字符串
functionSubstrGB($in,$num)
{
$pos=0;
$out=;
while($pos<strlen($in))
{
$c=substr($in,$pos,1);
if($c==\n)break;
if(ord($c)>128)
{
$out.=$c;
$pos++;
$c=substr($in,$pos,1);
$out.=$c;
}
else
{
$out.=$c;
}
$pos++;
if($pos>=$num)break;
}
return$out;
}
echoSubstrGB($string,8);
?>
<?php
/***************************************************************************
*cut_string.php
*------------------------------
*Date:Jul16,2005
*Copyright:none
*Mail:
*
*作用:截取中文字符.
*
*
***************************************************************************/
functioncut_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)returnjoin(,array_slice($t_string[0],$start,$sublen))....;
returnjoin(,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;
}
}
echo<br>.cut_str($string,8,$start=0,$code=sdf);
?>


评论


亲,登录后才可以留言!