我需要一个php截取字符串函数,可以指定从哪开始,截取几个,支持不同编码如题 谢谢了
1个回答
展开全部
<?php /** * utf-8、gb2312都支持的汉字截取函数 * * @param string $string * @param integer $sublen * @param integer $start * @param string $code * @return string */ function cut_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) return join('',array_slice($t_string[0],$start,$sublen))."..."; return join('',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; } } $str="新程php培训"; echo cut_str($str,8,0,'gb2312'); ?>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询