在使用php截取字符串的时候
发现php原生函数substr是不支持截取中文字符串的
以下代码可以解决php截取中文字符串出现的乱码及各类问题
截取GB2312中文字符串
<?php //截取中文字符串 function mysubstr($str, $start, $len){ $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++){ if(ord(substr($str, $i, 1)) > 0xa0){ $tmpstr .= substr($str, $i, 2); $i++; }else $tmpstr .= substr($str, $i, 1); } return $tmpstr; } ?>
截取utf8编码的多字节字符串
<?php //截取utf8字符串 function utf8Substr($str, $from, $len){ return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'. '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s', '$1',$str); } ?>