Home  >  Article  >  Backend Development  >  Complete collection of PHP string interception methods Four examples of PHP string interception

Complete collection of PHP string interception methods Four examples of PHP string interception

WBOY
WBOYOriginal
2016-07-25 08:51:331048browse
  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. //Intercept utf8 string
  2. function utf8Substr($str, $from, $len) {
  3. return preg_replace('#^(?:[x00-x7F]|[xC0- xFF][x80-xBF]+){0,'.$from.'}'. '((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$ len.'}).*#s', '$1',$str);
  4. } ?>
Copy code

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

  1. /*
  2. The Chinese character interception function cut_str (string, interception length, starting length, encoding) supported by Utf-8 and gb2312; the default encoding is utf-8 and the default starting length is 0
  3. */
  4. function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') {
  5. if($code == 'UTF-8') {
  6. $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]/";
  7. preg_match_all($pa, $string, $t_string);
  8. if(count ($t_string[0]) - $start --> $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
  9. return join(' ', array_slice($t_string[0], $start, $sublen));
  10. }
  11. else
  12. {
  13. $start = $start*2;
  14. $sublen = $sublen*2;
  15. $strlen = strlen($string );
  16. $tmpstr = '';
  17. for($i=0; $i<$strlen; $i++) { if($i>=$start && $i<($start+$sublen)) { if( ord(substr($string, $i, 1))>129)
  18. {
  19. $tmpstr.= substr($string, $i, 2);
  20. }
  21. else
  22. {
  23. $tmpstr.= substr($string , $i, 1);
  24. }
  25. }
  26. if(ord(substr($string, $i, 1))>129) $i++;
  27. }
  28. if(strlen($tmpstr)<$strlen ) $ tmpstr.= "..."; return $tmpstr; } } $str = "abcd string to be intercepted"; echo cut_str($str, 8, 0, 'gb2312'); ?>
Copy code

4. BugFree’s character interception function

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