+ -
当前位置:首页 → 问答吧 → 中文处理函数 的详细信息

中文处理函数 的详细信息

时间:2011-03-29

来源:互联网

中文处理函数 的详细信息

  1. <?
  2. /*
  3. php使用ISO-8859-1处理字符串,也就是以单字节处理字符串。中文码属于多字节字符,在使用substr,
  4. strlen,str_peplace等函数时很容易产生错误,处理中文特殊操作,必须使用一组中文处理函数。下面是
  5. GBK的substr,strlen操作函数,前者并不像php的substr一样可以使用负数作为start,lenght.希望大家
  6. 来不断完善这些函数,达到高效实用的程度。
  7. */
  8. //gbk str handle
  9. function gbk_substr(&$str,$start,$length=-1)
  10. {
  11. if($length==0) return "";
  12. if($start<0) $start=0;
  13. for($i=0;$i<$start;$i++)
  14. {
  15. if(ord(substr($str,$i,1))>=0x81)
  16. {
  17. $start++;
  18. $i++;
  19. }
  20. }
  21. if($start>gbk_strlen($str)) return "";
  22. $ss="";
  23. if($length==-1)
  24. {
  25. $ss=substr($str,$start);
  26. }
  27. else
  28. {
  29. echo "leghth=".$length."\n";
  30. for($i=$start;$i<$start+$length;$i++)
  31. {
  32. if(ord(substr($str,$i,1))>=0x81)
  33. {
  34. $ss.=substr($str,$i,2);
  35. $length++;
  36. $i++;
  37. }
  38. else
  39. {
  40. $ss.=substr($str,$i,1);
  41. }
  42. }
  43. }
  44. return $ss;
  45. }

  46. function gbk_strlen(&$str)
  47. {
  48. $len=strlen($str);
  49. $l=0;
  50. for($i=0;$i<$len;$i++)
  51. {
  52. if(ord(substr($str,$i,1))>=0x81) $i++;
  53. $l++;
  54. }
  55. return $l;
  56. }

  57. function gb2312_strlen(&$str)
  58. {
  59. $len=strlen($str);
  60. $l=0;
  61. for($i=0;$i<$len;$i++)
  62. {
  63. if(ord(substr($str,$i,1))>=0xa1) $i++;
  64. $l++;
  65. }
  66. return $l;
  67. }

  68. ?>
复制代码
这使我在网上找到的一段处理中文的php代码,希望对大家有所帮助。

作者: so_brave   发布时间: 2011-03-29

学习 谢谢分享

作者: wodentt   发布时间: 2011-03-30