VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php 截取字符串函数

本文章提供这三款php 截取字符串函数各有各的特点,所有字符串截取函数都支持中文汉字截取,解决了乱码问题,方法二,支持多种编码的截取.

字符串截取函数一,代码如下:

  1. function mystr($str,$str_len) {//剪取一定长度的字符串(字符串,剪取长度) 
  2.      if (strlen($str)<=$str_len) { 
  3.          return $str
  4.      }else return mysubstr($str,0,$str_len)."..."
  5. function mysubstr($str$start$len) {//剪取一定长度的字符串(字符串,剪取长度) 
  6.      $tmpstr = ""
  7.      $strlen = $start + $len
  8.      for($i = 0; $i < $strlen$i++) { 
  9.          if(ord(substr($str$i, 1)) > 0xa0) { 
  10.              $tmpstr .= substr($str$i, 2); 
  11.              $i++; 
  12.          } else 
  13.          $tmpstr .= substr($str$i, 1); 
  14.      } 
  15.      return $tmpstr

字符截取函数二,代码如下:

  1. function syssubstr($string,$length,$append = false)  
  2. {  
  3. if (strlen($string) < = $length )  
  4. {  
  5. return $string;  
  6. }  
  7. else  
  8. {  
  9. $i = 0;  
  10. while ($i < $length)  
  11. {  
  12. $stringtmp = substr($string,$i,1);  
  13. if ( ord($stringtmp) >=224 )  
  14. {  
  15. $stringtmp = substr($string,$i,3);  
  16. $i = $i + 3;  
  17. }  
  18. elseif( ord($stringtmp) >=192 )  
  19. {  
  20. $stringtmp = substr($string,$i,2);  
  21. $i = $i + 2;  
  22. }  
  23. else  
  24. {  
  25. $i = $i + 1;  
  26. }  
  27. $stringlast[] = $stringtmp;  
  28. }  
  29. $stringlast = implode("",$stringlast);  
  30. if($append)  
  31. {  
  32. $stringlast .= "...";  
  33. }  
  34. return $stringlast;  
  35. }  
  36. //开源代码phpfensi.com 
  37. $string = "";  
  38. $length = "18";  
  39. $append = false;  
  40. echo syssubstr($string,$length,$append); 

utf-8:$byte=3 | gb 2312:$byte=2 | big5:$byte=2,代码如下:

  1. function bite_str($string$start$len$byte=3) 
  2.      $str     = ""
  3.      $count   = 1; 
  4.      $str_len = strlen($string); 
  5.      for ($i=0; $i<$str_len$i++) { 
  6.          if (($count+1-$start)>$len) { 
  7.              $str   .= "..."
  8.              break
  9.          } elseif ((ord(substr($string,$i,1)) <= 128) && ($count < $start)) { 
  10.              $count++; 
  11.          } elseif ((ord(substr($string,$i,1)) > 128) && ($count < $start)) { 
  12.              $count = $count+2; 
  13.              $i     = $i+$byte-1; 
  14.          } elseif ((ord(substr($string,$i,1)) <= 128) && ($count >= $start)) { 
  15.              $str   .= substr($string,$i,1); 
  16.              $count++; 
  17.          } elseif ((ord(substr($string,$i,1)) > 128) && ($count >= $start)) { 
  18.              $str   .= substr($string,$i,$byte); 
  19.              $count = $count+2; 
  20.              $i     = $i+$byte-1; 
  21.          } 
  22.      } 
  23.      return $str
  24. //开源代码phpfensi.com 
  25. // test 
  26. $str = "1测试测试2测试测试3测试测试4测试测试"
  27. echo $str
  28. echo "<br>".bite_str($str,0,20,2);//0为开始地址,20为结束地址2为类型上面说到的 

方法四,支持中英文字符串截取函数,代码如下:

  1. function ccstrlen($str) #计算中英文混合字符串的长度 
  2. $cclen=0; 
  3. $asclen=strlen($str); 
  4. $ind=0; 
  5. $hascc=ereg("[xa1-xfe]",$str); #判断是否有汉字 
  6. $hasasc=ereg("[x01-xa0]",$str); #判断是否有ascii字符 
  7. if($hascc && !$hasasc) #只有汉字的情况 
  8. return strlen($str)/2; 
  9. if(!$hascc && $hasasc) #只有ascii字符的情况 
  10. return strlen($str); 
  11. for($ind=0;$ind<$asclen;$ind++) 
  12. if(ord(substr($str,$ind,1))>0xa0) 
  13. $cclen++; 
  14. $ind++; 
  15. else 
  16. $cclen++; 
  17. return $cclen; 
  18.  

出处:http://www.phpfensi.com/php/20140816/4296.html


相关教程