版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25275355/article/details/83181925
/**
* 用‘*’替换字符串中的手机号 固话 邮箱 QQ号码
* 2018-10-11
*/
function ReplaceThePhoneNumbers($oldStr = ""){
//1.检测字符串是否为空
if(empty($oldStr)){
return "";
}
//2.如果没有数字的直接返回
$oldStr_trim=trim($oldStr);
$patterns = "/\d+/";
preg_match_all($patterns,$oldStr_trim,$arr);
if(!$arr[0]){
return $oldStr;
}
//3.邮箱替换提取数据
$preg = "/([a-z0-9\-_\.]+@[a-z0-9]+\.[a-z0-9\-_\.]+)+/i";
if (preg_match_all($preg, $oldStr , $matches)) {
foreach ($matches[0] as $key=>$val){
$temp_str = $val;
$email_array = explode("@", $temp_str);
if(strlen($email_array[0]) < 6){
$pre = '';
$star_len = strlen($email_array[0]);
if(strlen($email_array[0]) == 5){
$pre = substr( $email_array[0], 0, 1 );
$star_len = strlen($email_array[0])-1;
}
$star = '';
for($i = 0;$i < $star_len;$i ++){
$star .='*';
}
$temp_str = $pre.$star.'@'.$email_array[1];
}else{
$pattern = '/([a-z0-9\-_\.])[a-z0-9\-_\.]{4}(([a-z0-9\-_\.])@[a-z0-9]+\.[a-z0-9\-_\.]+)/';
$replacement = "\$1****\$2";
$temp_str = preg_replace($pattern, $replacement, $temp_str);
}
$oldStr = str_replace($val,$temp_str,$oldStr);
}
}
// 4.删除86-180640741122,0997-8611222之类的号码中间的减号(-)
// $strArr = explode("-", $oldStr);
// $newStr = $strArr[0];
// for ($i=1; $i < count($strArr); $i++) {
// if (preg_match("/\d{2}$/", $newStr) && preg_match("/^\d{11}/", $strArr[$i])){
// $newStr .= $strArr[$i];
// } elseif (preg_match("/\d{3,4}$/", $newStr) && preg_match("/^\d{7,8}/", $strArr[$i])) {
// $newStr .= $strArr[$i];
// } else {
// $newStr .= "-".$strArr[$i];
// }
// $oldStr = $newStr;
// }
//5.保证头尾能被检测到
$oldStr_jiange = implode('间隔符',$arr[0]);
$oldStr_jiange = '间隔符'.$oldStr_jiange.'间隔符';
//6.提取QQ 号码
$preg='/\D(?:)?(\d{5,10})\D/i';//匹配数字的正则表达式
if (preg_match_all($preg, $oldStr_jiange , $matches)) {
if($matches[1]){
foreach ($matches[1] as $key=>$val){
if(strlen($val) == 5||strlen($val) == 6){
$temp_str = substr_replace($val,"****",1,4);
}else{
$temp_str = substr_replace($val,"****",strlen($val)%4+2,4);
}
$oldStr = str_replace($val,$temp_str,$oldStr);
}
}
}
//7.替换手机号
$pattern = "/(\d{3})\d{4}(\d{4})/";
$replacement = "\$1****\$2";
return preg_replace($pattern, $replacement, $oldStr);
}