当前位置:首页 > PHP教程 > php函数 > 列表

php 截取字符串函数

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-16 13:40:46 浏览: 评论:0 

本文章提供这三款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. } 
  6. function mysubstr($str, $start, $len) {//剪取一定长度的字符串(字符串,剪取长度) 
  7.      $tmpstr = ""; 
  8.      $strlen = $start + $len; 
  9.      for($i = 0; $i < $strlen; $i++) { 
  10.          if(ord(substr($str, $i, 1)) > 0xa0) { 
  11.              $tmpstr .= substr($str, $i, 2); 
  12.              $i++; 
  13.          } else 
  14.          $tmpstr .= substr($str, $i, 1); 
  15.      } 
  16.      return $tmpstr; 
  17. } 

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

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

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

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

Tags: php 截取字符串函数

分享到: