php字串截取的代碼學習

來源:互聯網
上載者:User
  1. //截取utf8字串
  2. function utf8Substr($str, $from, $len)
  3. {
  4. return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
  5. '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
  6. '$1',$str);
  7. }
  8. ?>
複製代碼

2、UTF-8、GB2312都支援的漢字截取函數

  1. function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
  2. {
  3. if($code == 'UTF-8')
  4. {
  5. $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]/";
  6. preg_match_all($pa, $string, $t_string);
  7. if(count($t_string[0])- $start > $sublen)return join('', array_slice($t_string[0], $start, $sublen))."...";
  8. return join('', array_slice($t_string[0], $start, $sublen));
  9. }
  10. else
  11. {
  12. $start = $start*2;
  13. $sublen = $sublen*2;
  14. $strlen = strlen($string);
  15. $tmpstr = '';
  16. for($i=0;$i<$strlen;$i++)
  17. {
  18. if($i>=$start && $i<($start+$sublen))
  19. {
  20. if(ord(substr($string, $i, 1))>129)
  21. {
  22. $tmpstr.= substr($string, $i, 2);
  23. }
  24. else
  25. {
  26. $tmpstr.= substr($string, $i, 1);
  27. }
  28. }
  29. if(ord(substr($string, $i, 1))>129)$i++;
  30. }
  31. if(strlen($tmpstr)<$strlen )$tmpstr.= "...";
  32. return $tmpstr;
  33. }
  34. }
  35. $str = "abcd需要截取的字串";
  36. echo cut_str($str, 8, 0, 'gb2312');
  37. ?>
複製代碼

3、BugFree 的字元截取函數

  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. $String = "CodeBit.cn -- 簡單、精彩、通用";
  38. $Length = "18";
  39. $Append = false;
  40. echo sysSubStr($String,$Length,$Append);
  41. ?>
複製代碼
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.