전화번호에 하이픈(-)을 넣어서 보기 좋게 정렬을 할 필요가 있을 경우 아래 함수를 이용하면 편하다.
<?php
// 전화번호의 숫자만 취한 후 중간에 하이픈(-)을 넣는다.
function add_hyphen($tel)
{
$tel = preg_replace("/[^0-9]/", "", $tel); // 숫자 이외 제거
if (substr($tel,0,2)=='02')
return preg_replace("/([0-9]{2})([0-9]{3,4})([0-9]{4})$/", "\\1-\\2-\\3", $tel);
else if (strlen($tel)=='8' && (substr($tel,0,2)=='15' || substr($tel,0,2)=='16' || substr($tel,0,2)=='18'))
// 지능망 번호이면
return preg_replace("/([0-9]{4})([0-9]{4})$/", "\\1-\\2", $tel);
else
return preg_replace("/([0-9]{3})([0-9]{3,4})([0-9]{4})$/", "\\1-\\2-\\3", $tel);
}
?>
substr($원본문자열, $찾을위치, $갯수)
- $원본문자열에서 $찾을위치의 인덱스로부터 $갯수 만큼의 문자열을 잘라서 반환
정규식에서 괄호()를 사용하면 순서대로 $1, $2, $3, ... 와 같이 불러서 사용 할 수 있다.
(^02.{0}|^01.{1}|[0-9]{3})
- ^02.{0} : ^는 정규식에서 시작을 의미하며 "02"로 시작 하는 경우를 말한다.
- "."은 문자 하나를 나타내는데 바로 뒤 괄호가 {0}이니 결과로는 "02"만 추출 한다는 내용
- | 는 '또는' 의 의미
- ^01.{1} : 위와 마찬가지로 "01"로 시작하는 경우
- .{1} 이므로 이후 1자리만 추출 즉 01X 로 시작하는 휴대폰을 의미
([0-9]{4}) : 바로 0-9까지의 숫자를 4자리 가져온다.