截取指定长度的文字(包含对汉字的处理)

林继 PHP 技术 6,569 共写了367个字 (2006-10-15 21:34:02) 没有评论 打印 扫描二维码 百度已收录

一般来说,要截取的变量来自Mysql,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点.

本程序实现的功能:截取指定长度汉字而不会出现以”?>”结尾,超出部分以”…”代替

  1. <?PHP 
  2. $str="这个字符比较长SO LONG"; 
  3. $Short_Str=showShort($str,6);//截取前面4个汉字,结果为:这个字符... 
  4. Echo  "$Short_Str"; 
  5.  
  6. /*

截取指定长度的文字(包含对汉字的处理)

可以正确地使用于 ANSI 编码的文件中,不能正确使用于UTF-8 的文件中

一般来说,要截取的变量来自Mysql,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点.

本程序实现的功能:截取指定长度汉字而不会出现以”?>”结尾,超出部分以”…”代替

  1. */ 
  2. Function csubstr($str,$start,$len)  
  3. {  
  4. $strlen=strlen($str);  
  5. $clen=0;  
  6. for($i=0;$i<$strlen;$i++,$clen++)  
  7. {  
  8. if ($clen>=$start+$len)  
  9. break;  
  10. if(ord(substr($str,$i,1))>0xa0)  
  11. {  
  12. if ($clen>=$start)  
  13. $tmpstr.=substr($str,$i,2);  
  14. $i++;  
  15. }  
  16. else  
  17. {  
  18. if ($clen>=$start)  
  19. $tmpstr.=substr($str,$i,1);  
  20. }  
  21. }  
  22.  
  23. return $tmpstr;  
  24. }  
  25. Function showShort($str,$len)  
  26. {  
  27. $tempstr = csubstr($str,0,$len);  
  28. if ($str<>$tempstr)  
  29. $tempstr .= "..."; //要以什么结尾,修改这里就可以. 
  30.  
  31. return $tempstr;  
  32. } 
  33. ?>

另一个函数,功能以上面的相同

  1. <?php 
  2.  
  3. function str_cut($str_cut,$length){ 
  4.  
  5.     if(strlen($str_cut) > $length){   //处理标题,太长用……表示 
  6.        for($i=0; $i < $length; $i++){ 
  7.            if (ord($str_cut[$i]) > 128) $i++;  
  8.        } 
  9.        $str_cut = substr($str_cut,0,$i)."....";  
  10.    } 
  11.    return $str_cut; 
  12. } 
  13.  
  14.  
  15. $content="艰苦电加fgfgf工搭街jhkjlk坊扛大;l';l个艰苦法'fdfd国家igkdjgkfdg…………………………"; 
  16.  
  17. $content=str_cut($content,$length="5"); 
  18.  
  19. echo $content;  
  20.  
  21. ?>

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

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

< >