본문 바로가기

개인 공부

[php] 핸드폰 번호에 - 넣기

728x90

어렵거나 그런건 아니지만 생각보다 웹사이트를 코딩하는 도중 많이 사용하게 되더라구요.

보통 값을 받아옴에 따라 다르지만 처음부터 - 를 넣을때도 있고 input을 3개로 나눠서 입력받으면서 -를 넣는 경우도 있죠


/* 핸드폰번호에 - 추가 */
$phone_num2 = '010,1234,1234';
$phone2 = explode(',',$phone_num2);
asd($phone2); /* 배열 0 -> 010 , 1 -> 1234 , 2 -> 1234*/
$phone2 = implode('-', $phone2);
asd($phone2); /* 010-1234-1234*/
/* 핸드폰 번호 사이에 구분값이 있는경우 간단하게 explode 로 나눈 후 다시 pmplode로 합칠 수 있다.. */

핸드폰번호의 구분기호나 공백이 있는경우 explode로 배열로 변경

[0] -> 010

[1] -> 1234

[2] -> 1234

로 생성 후 다시 합쳐주면서 - 를 사용하면 간단합니다.

implode('구분기호', '합쳐야할 배열');

로 간단하게 만들 수 있습니다.

문제는 구분기호가 없이 그냥 있는 전화번호였는데 .. 자바스크립트처럼 3글자씩 자르고 하기는 너무 귀찮아서 함수가 있어야 편하겠다 .. 싶더라구요.

/* 아무것도 없는 경우 */
$phone_num = '01012341234';
$phone = explode('',$phone_num);

asd($phone); /* 빈 값  -> 해당값이 구분값이 없는지 확인한다. 예를들어 - 가 있거나 없는경우 - 를 넣어놓고 배열이 있다면 그대로 사용하면 됨 */
if(!$phone){ /* 빈값일 시  실행 */
    $phone = format_phone($phone_num); /* 함수를 돌림*/
}
asd($phone); /* 010-1234-1234*/
/* class 파일을 생성해 format_phone 를 생성하면 편하게 사용 가능*/
function format_phone($phone){
    $phone = preg_replace("/[^0-9]/", "", $phone);  /* 0~9 인 숫자만을 선택하는 정규식.*/
    $length = strlen($phone); /* 해당 전화번호의 길이를 체크 (핸드폰번호의 3,3,4 / 3,4,4 를 구분) */
    switch ($length){
        case 11 : /* 전화번호의 길이를 구분해 값을 넣어준다. */
            return preg_replace("/([0-9]{3})([0-9]{4})([0-9]{4})/", "$1-$2-$3", $phone);
            break;
        case 10:
            return preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "$1-$2-$3", $phone);
            break;
        default :
            return $phone;
            break;
    }
}

 

풀어보면 아주 간단한거던데 처음할때는 어찌나 어렵던지 ...

-가 있는 경우와 없는경우를 체크해야하니 어떤 값을 받아오냐에 따라 explode는 생략해도 괜찮겠죠? 

만약 사용하게 된다면 if문에 else문에 implode를 넣어서 적용하면 완료!

728x90
댓글