php自定义函数截取汉字长度

复制代码 代码如下:

  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;

  }

  

复制代码 代码如下:

  <?PHP

  $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++;

  }

  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)."....");