PHP中截取固定长度字符串函数

2009-11-09 8:22  -  PHP -    

在网上看到一个函数,稍作修改

PHP:
  1. //////
  2.   //用于文字长度
  3.   //$sourcestr为字符串
  4.   //$cutlength保留的最长字串长度(中文,一个中文相当于两个英文和半角符号)
  5.   ////// 
  6.   function cut_str($sourcestr,$cutlength)
  7.   {
  8.      $returnstr='';
  9.      $i=0;
  10.      $n=0;
  11.      $str_length=strlen($sourcestr);//字符串的字节数
  12.      while (($n<$cutlength*2) and ($i<=$str_length))
  13.      {
  14.         $temp_str=substr($sourcestr,$i,1);
  15.         $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
  16.         if ($ascnum>=224)    //如果ASCII位高与224,
  17.         {
  18.            $returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符         
  19.            $i=$i+3;            //实际Byte计为3
  20.            $n=$n+2;           
  21.         }
  22.         else if ($ascnum>=192) //如果ASCII位高与192,
  23.         {
  24.            $returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
  25.            $i=$i+2;            //实际Byte计为2
  26.            $n=$n+2;           
  27.         }
  28.         else if ($ascnum>=65 && $ascnum<=90) //如果是大写字母,
  29.         {
  30.            $returnstr=$returnstr.substr($sourcestr,$i,1);
  31.            $i=$i+1;            //实际的Byte数仍计1个
  32.            $n++;           
  33.         }
  34.         else                //其他情况下,包括小写字母和半角标点符号,
  35.         {
  36.            $returnstr=$returnstr.substr($sourcestr,$i,1);
  37.            $i=$i+1;            //实际的Byte数计1个
  38.            $n++;       
  39.         }
  40.      } 
  41.      if ($str_length>=$cutlength*2)
  42.      {
  43.         $returnstr .= “..”;//超过长度时在尾处加上省略号
  44.      }
  45.      return $returnstr;
  46.   }

已有 0 条评论 »

Wordpress主题模板 watch trueblood online movie fans watch ncis online