首页 > 开发 > PHP > 正文

php按字符无乱码截取中文的方法

2024-05-04 23:33:27
字体:
来源:转载
供稿:网友

这篇文章主要介绍了php按字符无乱码截取中文的方法,涉及php操作中英文字符串的技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了php按字符无乱码截取中文的方法。分享给大家供大家参考。具体实现方法如下:

  1. <?php 
  2. //$str 待截取的字符串 
  3. //$len 截取的字符个数 
  4. //$chars 已经截取的字符数 
  5. //$res 保存的字符串 
  6. //$chars 保存已经截取的字符串个数 
  7. //$offset 截取的偏移量 
  8. //$length 字符串的字节数 
  9. //若$len>$str的字符个数,造成无谓的while循环,($offset<$length限定) 
  10. function utf8sub($str,$len){ 
  11. if($len<=0){ 
  12. return ; 
  13. $res=""
  14. $offset=0; 
  15. $chars=0; 
  16. $length=strlen($str); 
  17. while($chars<$len && $offset<$length){ 
  18. $hign=decbin(ord(substr($str,$offset,1))); 
  19. if(strlen($hign)<8){ 
  20. $count=1; 
  21. }elseif(substr($hign,0,3)=="110"){ 
  22. $count=2; 
  23. }elseif(substr($hign,0,4)=="1110"){ 
  24. $count=3; 
  25. }elseif(substr($hign,0,5)=="11110"){ 
  26. $count=4; 
  27. }elseif(substr($hign,0,6)=="111110"){ 
  28. $count=5; 
  29. }elseif(substr($hign,0,7)=="1111110"){ 
  30. $count=6; 
  31. $res.=substr($str,$offset,$count); 
  32. $offset+=$count
  33. $chars+=1; 
  34. return $res
  35. function utf8sub1($str,$len){ 
  36. $chars=0; 
  37. $res=""
  38. $offset=0; 
  39. $length=strlen($str); 
  40. while($chars<$len && $offset<$length){ 
  41. $hign=decbin(ord(substr($str,$offset,1))); 
  42. if(strlen($hign)<8){ 
  43. $count=1; 
  44. }elseif($hign & "11100000"=="11000000"){ 
  45. $count=2; 
  46. }elseif($hign & "11110000"=="11100000"){ 
  47. $count=3; 
  48. }elseif($hign & "11111000"=="11110000"){ 
  49. $count=4; 
  50. }elseif($hign & "11111100"=="11111000"){ 
  51. $count=5; 
  52. }elseif($hign & "11111110"=="11111100"){ 
  53. $count=6; 
  54. $res.=substr($str,$offset,$count); 
  55. $chars++; 
  56. $offset+=$count
  57. return $res
  58. $a="中华ah人民hdj"
  59. echo utf8sub($a,5); 
  60. ?> 



希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表