- function msubstr($str,$start,$len) {
- $strlen=$start+$len;
- for($i=0;$i<$strlen;$i++) {
- if(ord(substr($str,$i,1))>0xa0) {
- $tmpstr.=substr($str,$i,2);
- $i++;
- } else
- $tmpstr.=substr($str,$i,1);
- }
- return $tmpstr;
- }
调用:
$str="这个字符好长呀,^_^"; - $Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符...
- Echo "$Short_Str";
- Function csubstr($str,$start,$len)
- {
- $strlen=strlen($str);
- $clen=0;
- for($i=0;$i<$strlen;$i++,$clen++)
- {
- if ($clen>=$start+$len)
- break;
- if(ord(substr($str,$i,1))>0xa0)
- {
- if ($clen>=$start)
- $tmpstr.=substr($str,$i,2);
- $i++;
- } bbs.it-home.org
- else
- {
- if ($clen>=$start)
- $tmpstr.=substr($str,$i,1);
- }
- }
return $tmpstr; - }
- Function showShort($str,$len)
- {
- $tempstr = csubstr($str,0,$len);
- if ($str<>$tempstr)
- $tempstr .= "..."; //要以什么结尾,修改这里就可以.
return $tempstr; - }
这里再分享一个更简洁的截取汉字长度的方法:
- $len = 19;
- $text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";
- echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."....");
|