Home >Backend Development >PHP Tutorial >Four php Chinese string interception functions

Four php Chinese string interception functions

WBOY
WBOYOriginal
2016-07-25 09:04:19940browse
  1. //Intercept Chinese string
  2. function mysubstr($str, $start, $len) {
  3. $tmpstr = "";
  4. $strlen = $start + $len;
  5. for( $i = 0; $i < $strlen; $i++) {
  6. if(ord(substr($str, $i, 1)) > 0xa0) {
  7. $tmpstr .= substr($str, $i, 2);
  8. $i++;
  9. } else
  10. $tmpstr .= substr($str, $i, 1);
  11. }
  12. return $tmpstr;
  13. }
  14. ?>
Copy code

2, Intercept utf8 encoded multi-byte string

  1. < ?php
  2. //Intercept utf8 string
  3. function utf8Substr($str, $from, $len)
  4. {
  5. return preg_replace('#^(?:[x00-x7F]|[ xC0-xFF][x80-xBF]+){0,'.$from.'}'.
  6. '((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0, '.$len.'}).*#s',
  7. '$1',$str);
  8. }
  9. ?>
Copy code

3,UTF-8, and GB2312 all support Chinese character interception function

  1. < ?php
  2. /*
  3. @Utf-8, gb2312 supported Chinese character interception function
  4. @cut_str (string, interception length, starting length, encoding);
  5. @The encoding defaults to utf- 8
  6. @The default start length is 0
  7. @http://bbs.it-home.org
  8. */
  9. function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
  10. {
  11. if($code == 'UTF-8')
  12. {
  13. $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]| [xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80 -xbf]/";
  14. preg_match_all($pa, $string, $t_string);
  15. if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0] ], $start, $sublen))."...";
  16. return join('', array_slice($t_string[0], $start, $sublen));
  17. }
  18. else
  19. {
  20. $start = $ start*2;
  21. $sublen = $sublen*2;
  22. $strlen = strlen($string);
  23. $tmpstr = '';
  24. for($i=0; $i< $strlen; $i++)
  25. {
  26. if($i>=$start && $i< ($start+$sublen))
  27. {
  28. if(ord(substr($string, $i, 1))>129)
  29. {
  30. $tmpstr.= substr( $string, $i, 2);
  31. }
  32. else
  33. {
  34. $tmpstr.= substr($string, $i, 1);
  35. }
  36. }
  37. if(ord(substr($string, $i, 1) )>129) $i++;
  38. }
  39. if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
  40. return $tmpstr;
  41. }
  42. }
  43. $str = "abcd needs to be intercepted string";
  44. echo cut_str($str, 8, 0, 'gb2312');
  45. ?>
Copy code

4, BugFree character interception function

  1. < ?php
  2. /**
  3. * @package BugFree
  4. * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
  5. * @http://bbs.it-home.org
  6. *
  7. * Return part of a string(Enhance the function substr())
  8. *
  9. * @author Chunsheng Wang
  10. * @param string $String the string to cut.
  11. * @param int $Length the length of returned string.
  12. * @param booble $Append whether append "...": false|true
  13. * @return string the cutted string.
  14. */
  15. function sysSubStr($String,$Length,$Append = false)
  16. {
  17. if (strlen($String) < = $Length )
  18. {
  19. return $String;
  20. }
  21. else
  22. {
  23. $I = 0;
  24. while ($I < $Length)
  25. {
  26. $StringTMP = substr($String,$I,1);
  27. if ( ord($StringTMP) >=224 )
  28. {
  29. $StringTMP = substr($String,$I,3);
  30. $I = $I + 3;
  31. }
  32. elseif( ord($StringTMP) >=192 )
  33. {
  34. $StringTMP = substr($String,$I,2);
  35. $I = $I + 2;
  36. }
  37. else
  38. {
  39. $I = $I + 1;
  40. }
  41. $StringLast[] = $StringTMP;
  42. }
  43. $StringLast = implode("",$StringLast);
  44. if($Append)
  45. {
  46. $StringLast .= "...";
  47. }
  48. return $StringLast;
  49. }
  50. }
  51. $ String = "bbs.it-home.org Scripting School is dedicated to you;
  52. $Length = "18";
  53. $Append = false;
  54. echo sysSubStr($String,$Length,$Append);
  55. ?>
Copy code


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn