채택완료

이름가운데 별표 처리하기

2020-08-16 (일) 19:32:07 2,800

출력되는 이름이나 닉네임을 가운데는 별표로 가리고 싶습니다. 전화번호도 가운데는 가리고 앞뒤만 보여주고 싶은데 가능할까요?

|

답변 1개

채택된 답변
+20 포인트
Copy
function masking($_type, $_data){
    $_data = str_replace('-','',$_data);
    $strlen = mb_strlen($_data, 'utf-8');
    $maskingValue = "";

    $useHyphen = "-";

    if($_type == 'N'){
        switch($strlen){
            case 2:
                $maskingValue = mb_strcut($_data, 0, 3, "UTF-8").'*';
                break;
            case 3:
                $maskingValue = mb_strcut($_data, 0, 3, "UTF-8").'*'.mb_strcut($_data, 8, 11, "UTF-8");
                break;
            case 4:
                $maskingValue = mb_strcut($_data, 0, 3, "UTF-8").'**'.mb_strcut($_data, 12, 15, "UTF-8");
                break;
            default:
                $maskingValue = mb_strcut($_data, 0, 3, "UTF-8").'**'.mb_strcut($_data, 12, 15, "UTF-8");
                break;
        }
    }else if($_type == 'P'){
        switch($strlen){
            case 10:
                $maskingValue = mb_substr($_data, 0, 3)."{$useHyphen}***{$useHyphen}".mb_substr($_data, 6, 4);
                break;
            case 11:
                $maskingValue = mb_substr($_data, 0, 3)."{$useHyphen}****{$useHyphen}".mb_substr($_data, 7, 4);
                break;
            default:
                trigger_error('Not a known format parametter in function', E_USER_NOTICE);
                break;
        }
    }else{
        trigger_error('Masking Function Parameter Error', E_USER_NOTICE);
    }
    return $maskingValue;
}

//이름일경우

echo masking('N','홍길동')

//전화번호일경우

echo masking('P','010-1234-1234')

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