新澳门31999 ,PHP截取中文字符串的问题_PHP编程_脚本之家。以下代码试用于GB2312编码,截取中文字符串是PHP中二个发烧的难点,杀绝措施是依照值是不是高于等于128来剖断是不是是双字节字符,以制止现身乱码的情形。但中韩文混合、特殊符号等难题总是存在,今后写八个相比较完善的,仅供仿照效法:
程序表明:
1.len参数以中文字符为正式,1len等于2个英文字符,为了方式上赏心悦目些
2.譬喻将magic参数设为false,则汉语和保加尼斯语同等待遇,取绝没错字符数
3.特意适用于用htmlspecialchars(卡塔尔(قطر‎实行过编码的字符串
4.能正确管理GB231第22中学实体字符情势 程序代码:
functionFSubstr($title,$start,$len=””,$magic=true卡塔尔国 { /**
*poweredbySmartpig *mailto:d.einstein@263.net */ $length=0;
if$len=strlen; //判定起先为不得法地方 if { $cnum=0; for {
if(ord>=128卡塔尔$cnum++; } if$start–; unset; } ifreturnsubstr; $alen=0;
$blen=0; $realnum=0; for($i=$start;$i”卡塔尔 { $cstep=4; $length+=4; $i+=3;
$realnum++; if { $alen++; } } elseif==”&”State of Qatar { $cstep=5; $length+=5;
$i+=4; $realnum++; if { $alen++; } } elseif==”””State of Qatar { $cstep=6;
$length+=6; $i+=5; $realnum++; if { $alen++; } } elseif==”‘”State of Qatar {
$cstep=6; $length+=6; $i+=5; $realnum++; if { $alen++; } }
elseif;/i”,substr { $cstep=strlen; $length+=strlen; $i+=strlen-1;
$realnum++; if { $blen++; $ctype=1; } } }else{ if { $cstep=2;
$length+=2; $i+=1; $realnum++; if { $blen++; $ctype=1; } }else{
$cstep=1; $length+=1; $realnum++; if { $alen++; } } } if { if==break;
if== { if { $length-=$cstep; break; }else{ break; } } }else{ ifbreak; }
} unset; unset; unset; unset; unset;
returnsubstr($title,$start,$lengthState of Qatar; }

发表评论

电子邮件地址不会被公开。 必填项已用*标注