"景先生毕设|www.jxszl.com

PHP 截取字符串专题集合

2022-10-28 23:36编辑: www.jxszl.com景先生毕设
I..UTF-VIII.GBIIIIII.II都支持的汉字截取函数
复制代码代码如下:
/*
Utf-VIII.gbIIIIII.II都支持的汉字截取函数
cut_str(字符串,截取长度,开始长度,编码);
编码默认为utf-VIII

 更多精彩就在: 51免费论文网|www.jxszl.com 
r/>开始长度默认为0
*/
functioncut_str($string,$sublen,$start=0,$code=UTF-VIII)
{
if($code==UTF-VIII)
{
$pa="/[x0I.-xVIIf]|[xcII-xdf][xVIII0-xbf]|xe0[xa0-xbf][xVIII0-xbf]|[xeI.-xef][xVIII0-xbf][xVIII0-xbf]|xf0[xIX0-xbf][xVIII0-xbf][xVIII0-xbf]|[xfI.-xfVII][xVIII0-xbf][xVIII0-xbf][xVIII0-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*II;
$sublen=$sublen*II;
$strlen=strlen($string);
$tmpstr=;
for($i=0;$i<$strlen;$i++)
{
if($i>=$start&&$i<($start+$sublen))
{
if(ord(substr($string,$i,I.))>I.IIIX)
{
$tmpstr.=substr($string,$i,II);
}
else
{
$tmpstr.=substr($string,$i,I.);
}
}
if(ord(substr($string,$i,I.))>I.IIIX)$i++;
}
if(strlen($tmpstr)<$strlen)$tmpstr.="…";
return$tmpstr;
}
}
$str="abcd需要截取的字符串";
echocut_str($str,VIII,0,gbIIIIII.II);
?>
II.截取utfVIII编码的多字节字符串
复制代码代码如下:
//截取utfVIII字符串
functionutfVIIISubstr($str,$from,$len)
{
returnpreg_replace(#^(?:[x00-xVIIF]|[xC0-xFF][xVIII0-xBF]+){0,.$from.}.
((?:[x00-xVIIF]|[xC0-xFF][xVIII0-xBF]+){0,.$len.}).*#s,
$I.,$str);
}
?>
III.截取GBIIIIII.II中文字符串
复制代码代码如下:
//截取中文字符串
functionmysubstr($str,$start,$len){
$tmpstr="";
$strlen=$start+$len;
for($i=0;$i<$strlen;$i++){
if(ord(substr($str,$i,I.))>0xa0){
$tmpstr.=substr($str,$i,II);
$i++;
}else
$tmpstr.=substr($str,$i,I.);
}
return$tmpstr;
}
?>
IV.BugFree的字符截取函数
复制代码代码如下:
/**
*@packageBugFree
*@version$Id:FunctionsMain.inc.php,vI..IIIIIII00V/0IX/IIIVI.I.:IIIVIII:IIIVIIwwccssExp$
*
*
*Returnpartofastring(Enhancethefunctionsubstr())
*
*@paramstring$Stringthestringtocut.
*@paramint$Lengththelengthofreturnedstring.
*@parambooble$Appendwhetherappend"…":false|true
*@returnstringthecuttedstring.
*/
functionsysSubStr($String,$Length,$Append=false)
{
if(strlen($String)<=$Length)
{
return$String;
}
else
{
$I=0;
while($I<$Length)
{
$StringTMP=substr($String,$I,I.);
if(ord($StringTMP)>=IIIIIV)
{
$StringTMP=substr($String,$I,III);
$I=$I+III;
}
elseif(ord($StringTMP)>=I.IXII)
{
$StringTMP=substr($String,$I,II);
$I=$I+II;
}
else
{
$I=$I+I.;
}
$StringLast[]=$StringTMP;
}
$StringLast=implode("",$StringLast);
if($Append)
{
$StringLast.="…";
}
return$StringLast;
}
}
$String="http://www.I.000zx.cn_简单.精彩.通用";
$Length="I.VIII";
$Append=false;
echosysSubStr($String,$Length,$Append);
?>
dedecms中的截取代码
这是从dedecms直接拿的代码,大家可以稍作修改即可.
复制代码代码如下:
//中文截取II,单字节截取模式
//如果是request的内容,必须使用这个函数
functioncn_substrR($str,$slen,$startdd=0)
{
$str=cn_substr(stripslashes($str),$slen,$startdd);
returnaddslashes($str);
}
//中文截取II,单字节截取模式
functioncn_substr($str,$slen,$startdd=0)
{
global$cfg_soft_lang;
if($cfg_soft_lang==utf-VIII)
{
returncn_substr_utfVIII($str,$slen,$startdd);
}
$restr=;
$c=;
$str_len=strlen($str);
if($str_len<$startdd+I.)
{
return;
}
if($str_len<$startdd+$slen||$slen==0)
{
$slen=$str_len-$startdd;
}
$enddd=$startdd+$slen-I.;
for($i=0;$i<$str_len;$i++)
{
if($startdd==0)
{
$restr.=$c;
}
elseif($i>$startdd)
{
$restr.=$c;
}
if(ord($str[$i])>0xVIII0)
{
if($str_len>$i+I.)
{
$c=$str[$i].$str[$i+I.];
}
$i++;
}
else
{
$c=$str[$i];
}
if($i>=$enddd)
{
if(strlen($restr)+strlen($c)>$slen)
{
break;
}
else
{
$restr.=$c;
break;
}
}
}
return$restr;
}
//utf-VIII中文截取,单字节截取模式
functioncn_substr_utfVIII($str,$length,$start=0)
{
if(strlen($str)<$start+I.)
{
return;
}
preg_match_all("/./su",$str,$ar);
$str=;
$tstr=;
//为了兼容mysqlIV.I.以下版本,与数据库varcharI.致,这里使用按字节截取
for($i=0;isset($ar[0][$i]);$i++)
{
if(strlen($tstr)<$start)
{
$tstr.=$ar[0][$i];
}
else
{
if(strlen($str)<$length+strlen($ar[0][$i]))
{
$str.=$ar[0][$i];
}
else
{
break;
}
}
}
return$str;
}
phpcms中的字符串截取代码:
复制代码代码如下:
functionstr_cut($string,$length,$dot=...)
{
$strlen=strlen($string);
if($strlen<=$length)return$string;
$string=str_replace(array(,&,",�IIIIX;,,,—,<,>,·,…),array(,&,","",,",_,<,>,·,…),$string);
$strcut=;
if(strtolower(CHARSET)==utf-VIII)
{
$n=$tn=$noc=0;
while($n<$strlen)
{
$t=ord($string[$n]);
if($t==IX||$t==I.0||(IIIII<=$t&&$t<=I.IIVI)){
$tn=I.;$n++;$noc++;
}elseif(I.IXIV<=$t&&$t<=IIIIIII){
$tn=II;$n+=II;$noc+=II;
}elseif(IIIIIV<=$t&&$t$tn=III;$n+=III;$noc+=II;
}elseif(IIIV0<=$t&&$t<=IIIVVII){
$tn=IV;$n+=IV;$noc+=II;
}elseif(IIIVVIII<=$t&&$t<=IIVI.){
$tn=V;$n+=V;$noc+=II;
}elseif($t==IIVII||$t==IIVIII){
$tn=VI;$n+=VI;$noc+=II;
}else{
$n++;
}
if($noc>=$length)break;
}
if($noc>$length)$n-=$tn;
$strcut=substr($string,0,$n);
}
else
{
$dotlen=strlen($dot);
$maxi=$length-$dotlen-I.;
for($i=0;$i<$maxi;$i++)
{
$strcut.=ord($string[$i])>I.IIVII?$string[$i].$string[++$i]:$string[$i];
}
}
$strcut=str_replace(array(&,","",<,>),array(&,",�IIIIX;,<,>),$strcut);
return$strcut.$dot;
}

原文链接:http://www.jxszl.com/biancheng/dedecms/72688.html