채택완료

전화번호 뒤 4자리만 보이고 앞자리는 "***" 처리 하려면 어떻게 해야할까요?

안녕하세요.
전화번호에서 뒤 4자리만 보이고 앞자리는 *** 으로 보이게 하고 싶습니다.

전화번호 값은 필드하나로 받아서 000-0000-0000 또는 00000000000 등으로 입력되어 있습니다.

https://gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=21&page=5
위 강좌에 나와 있는 내용은 확인했는데, 뒷자리만 보이게 하는 내용은 없어서 어떻게 해야할지 문의 드립니다.
 

|

답변 4개 / 댓글 4개

채택된 답변
+20 포인트

Copy
function mask_tel($phone) {
    $phone = preg_replace("/[^0-9]/", "", $phone); //숫자외 제거
    $phone = preg_replace("/([0-9]{3})([0-9]{4})([0-9]{4})/", "$1-$2-$3", $phone); //하이픈 넣어줌
    return preg_replace('/([0-9]+)-([0-9]+)-([0-9]{4})/', '${1}-****-$3', $phone); //정규식으로 중간 4자리 마스킹
}


echo mask_tel('01045455555');
//결과 010-****-5555

답변에 대한 댓글 2개

감사합니다. ~~!!
말씀해주신 내용 참고해서 아래와 같이 적용해서 성공했습니다.

if (!$is_admin && $list[$i]['fm_dadtel']) {
$list[$i]['fm_dadtel'] = preg_replace("/[^0-9]/", "", $list[$i]['fm_dadtel']); //숫자외 제거
$list[$i]['fm_dadtel'] = preg_replace("/([0-9]{3})([0-9]{4})([0-9]{4})/", "$1-$2-$3", $list[$i]['fm_dadtel']); //하이픈 넣어줌
$list[$i]['fm_dadtel'] = preg_replace('/([0-9]+)-([0-9]+)-([0-9]{4})/', '${1}-****-$3', $list[$i]['fm_dadtel']); //정규식으로 중간 4자리 마스킹
}


<?php echo $list[$i]['fm_dadtel'] ?>


010-****-0000 이런식으로 잘 나옵니다. ~~
위처럼 하나하나 적을 필요 없이. 아래처럼 하시면 될 듯..

function mask_tel($phone) {
$phone = preg_replace("/[^0-9]/", "", $phone); //숫자외 제거
$phone = preg_replace("/([0-9]{3})([0-9]{4})([0-9]{3,4})/", "$1-$2-$3", $phone); //하이픈 넣어줌
return preg_replace('/([0-9]+)-([0-9]+)-([0-9]{4})/', '${1}-****-$3', $phone); //정규식으로 중간 4자리 마스킹
}

if (!$is_admin && $list[$i]['fm_dadtel']) {
$list[$i]['fm_dadtel'] = mask_tel($list[$i]['fm_dadtel']);
}

도움 많이되었습니다.감사합니다~!

안녕하세요.

아래의 내용도 참고를 해보세요~

 

https://gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=21&page=5

 

답변에 대한 댓글 1개

답변감사합니다.
말씀하신 링크 참조해서 확인했습니다.
다만 제가 응용을 할 능력이 안되서, 위 내용에서 뒤 자리만 나오게 하는 내용이 없어서 문의드립니다.

Copy
function processedPhoneNumber($phoneNumber){
  // 숫자만 남기고 모든 문자를 제거
  $onlyNumericalPhoneNumber = preg_replace("/[^0-9]/", '', $phoneNumber);
  
  // 마지막 4자리 숫자를 가져옴
  $lastFourDigits = substr($onlyNumericalPhoneNumber, -4);

  // 마지막 4자리를 제외한 나머지 부분을 가져옴
  $maskedPart = substr($onlyNumericalPhoneNumber, 0, -4);

  
  // 마지막 4자리를 제외한 부분을 *로 마스킹
  $maskedPart = str_repeat("*", strlen($maskedPart));
  
  // 마스킹한 부분과 마지막 4자리 숫자를 합침
  $processedPhoneNumber = $maskedPart . $lastFourDigits;
  
  return $processedPhoneNumber;
}

 

// 사용법

$phoneNumber = "123-4567-8901";
echo processedPhoneNumber($phoneNumber);

답변에 대한 댓글 1개

답변감사합니다.!!
제가 php를 잘 몰라서 그누보드에 어떻게 적용해야 잘 모르겠습니다.
아래예처럼 그누보드에 적용해서 설명가능할까요?

if (!$is_admin && $list[$i]['wr_1']) {
$list[$i]['wr_1'] = substr($list[$i]['wr_1'],0,-4)."****";
}

답변을 작성하려면 로그인이 필요합니다.