PHP中英数字混排字符串的截取

因为php是外国开发的,在中英文混合体时截取会经常出现乱码,下面是一个解决产生乱码的代码,如下:

  1. function smssubstr($string, $length) {
  2. if(strlen($string) <= $length) {
  3. return $string;
  4. }
  5. $strcut = '';
  6. for($i = 0; $i < $length; $i++) {
  7. $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
  8. }
  9. return $strcut;
  10. }
  11. for($i=1; $i<=$smsnum; $i++){
  12. ${'smscontent'.$i} = smssubstr($message,$smsper);
  13. $message = str_replace(${'smscontent'.$i},"",$message);
  14. }