非自己的客户手机号加密展示,展示规则:前三位数字,后三位数字明文,中间拼接4位,例如:182****3336, +152****3663。如果手机号长度小于7位,展示前三位数字,后面拼接8位,例如:123********
求函数?
非自己的客户手机号加密展示,展示规则:前三位数字,后三位数字明文,中间拼接4位,例如:182****3336, +152****3663。如果手机号长度小于7位,展示前三位数字,后面拼接8位,例如:123********
求函数?
<?php
function hideStr($string, $bengin = 0, $len = 4, $type = 0, $glue = "@") {
if (empty($string))
return false;
$array = array();
if ($type == 0 || $type == 1 || $type == 4) {
$strlen = $length = mb_strlen($string);
while ($strlen) {
$array[] = mb_substr($string, 0, 1, "utf8");
$string = mb_substr($string, 1, $strlen, "utf8");
$strlen = mb_strlen($string);
}
}
if ($type == 0) {
for ($i = $bengin; $i < ($bengin + $len); $i++) {
if (isset($array[$i]))
$array[$i] = "*";
}
$string = implode("", $array);
} else if ($type == 1) {
$array = array_reverse($array);
for ($i = $bengin; $i < ($bengin + $len); $i++) {
if (isset($array[$i]))
$array[$i] = "*";
}
$string = implode("", array_reverse($array));
} else if ($type == 2) {
$array = explode($glue, $string);
$array[0] = hideStr($array[0], $bengin, $len, 1);
$string = implode($glue, $array);
} else if ($type == 3) {
$array = explode($glue, $string);
$array[1] = hideStr($array[1], $bengin, $len, 0);
$string = implode($glue, $array);
} else if ($type == 4) {
$left = $bengin;
$right = $len;
$tem = array();
for ($i = 0; $i < ($length - $right); $i++) {
if (isset($array[$i]))
$tem[] = $i >= $left ? "*" : $array[$i];
}
$array = array_chunk(array_reverse($array), $right);
$array = array_reverse($array[0]);
for ($i = 0; $i < $right; $i++) {
$tem[] = $array[$i];
}
$string = implode("", $tem);
}
return $string;
}
$str = '123456';
echo hideStr($str,3,4);
/**
* 隐藏手机号码
*
* @param string $mobile 手机号码
*
* @return string
*/
function hide_mobile($mobile = '')
{
if (strlen($mobile) > 7) {
return substr($mobile, 0, 3) . str_repeat('*', strlen($mobile) - 7) . substr($mobile, -4);
} elseif (strlen($mobile) > 2) {
return substr($mobile, 0, 1) . str_repeat('*', strlen($mobile) - 2) . substr($mobile, -1);
} else {
return $mobile;
}
}
简易版本
2 回答1.5k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答920 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答986 阅读
1 回答957 阅读
1 回答879 阅读
使用substr_replace 将下标3(从 0 开始计算)后面的4位替换为
****
,再使用 str_pad 将 文本填充至 11 位,若已是 11 位,则不会操作,否则有。有个缺陷 8 ~ 10 位的会显示成
022****11**