mb_strlen截取中文乱码问题 本地环境没有问题 另一个环境有问题
另一个环境上 mbstring扩展有的
var_dump(mb_internal_encoding()); // string(10) "ISO-8859-1"
编码格式的问题
没有修改默认配置
执行截取前 加上mb_internal_encoding("UTF-8");
截取正常了
function hiddenPart($str, $type = 'mobile')
{
if (!$str) {
return $str;
}
mb_internal_encoding("UTF-8");
$len = mb_strlen($str);
switch ($type) {
case 'addr':
$len = mb_strlen($str);
$start = mb_strpos($str, '区');
if ($start === false) {
$start = $len - 8;
} else {
$start++;
}
if ($start < 0) {
$start = 0;
}
return mb_substr($str, 0, $start) . '********';
break;
case 'name':
return mb_substr($str, 0, 1) . '***';
break;
default:
$start = floor($len/2) - 2;
if ($start < 0) {
$start = 0;
}
return mb_substr($str, 0, $start) . '****' . mb_substr($str, $start + 4);
break;
}
}