ecshop里的截取UTF-8编码下字符串的函数,我测试有问题

2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家

  1. <?php
  2. function sub_str($str, $length = 0, $append = true)
  3. {
  4. $str = trim($str);
  5. $strlength = strlen($str);

  6. if ($length == 0 || $length >= $strlength)
  7. {
  8. return $str;//截取长度等于0或大于等于本字符串的长度,返回字符串本身
  9. }
  10. elseif ($length < 0)//如果截取长度为负数
  11. {
  12. $length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度
  13. if ($length < 0)
  14. {
  15. $length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度
  16. }
  17. }

  18. if (function_exists('mb_substr'))
  19. {
  20. $newstr = mb_substr($str, 0, $length, EC_CHARSET);
  21. }
  22. elseif (function_exists('iconv_substr'))
  23. {
  24. $newstr = iconv_substr($str, 0, $length, EC_CHARSET);
  25. }
  26. else
  27. {
  28. //$newstr = trim_right(substr($str, 0, $length));
  29. $newstr = substr($str, 0, $length);
  30. }

  31. if ($append && $str != $newstr)
  32. {
  33. $newstr .= '...';
  34. }

  35. return $newstr;
  36. }
  37. define('EC_CHARSET','utf-8');
  38. $str='这样一来我的字符串就不会有乱码^_^';
  39. echo sub_str($str,7);
  40. ?>
复制代码
输出:这样一来我的锟�...