728x90

전화번호가 연속으로 두개가 한 셀에 있을 때 앞번호 1개만 추출하고, 전화번호와 이름이 혼용되어 있을 때 전화번호만 추출하고 싶을 때가 있다.

<?php
$line07 = "011-0001-0800, 010-0001-2981";
$mtelNO = TelNumRegex($line07);
echo preg_replace("/([0-9]{3})([0-9]{3,4})([0-9]{4})$/""\\1-\\2-\\3"$mtelNO);
echo '<br/><br/>';
 
$line07 = "홍길동 011-0002-0800";
$mtelNO = TelNumRegex($line07);
echo preg_replace("/([0-9]{3})([0-9]{3,4})([0-9]{4})$/""\\1-\\2-\\3"$mtelNO);
echo '<br/><br/>';
 
// 전화번호 정규식 반환 (전화번호 2개가 콤마로 구분되면 앞번호만 추출, 전화번호/성명 혼용이면 전화반호만 추출)
function TelNumRegex($inputNO){
    $pattern = '/\d{3}[-]?\d{4}[-]?\d{4}\s?[,]\s?\d{3}[-]?\d{4}[-]?\d{4}/';
    preg_match_all($pattern,$inputNO,$output);
    if(!empty($output[0])) {
        $tempNO = explode(',',$output[0][0]);
        $mtelNO = preg_replace("/[^0-9]/"""$tempNO[0]);
    } else {
        $mtelNO = preg_replace("/[^0-9]/"""$inputNO);
    }
    return $mtelNO;
}
 
?>
 

패턴 만들기는 https://regexr.com/ 사이트에서 테스트하면서 검증하면 된다.

 

위의 코드를 다시 수정해서 휴대폰번호만 추출하고, 개수를 여러개 반환하거나 1개만 반환한다는 가정하에 만든 코드이다.

<?php
$line07 = "011-0001-0800, 010-0001-2981";
$mtelNO = TelNumRegex($line07);
echo preg_replace("/([0-9]{3})([0-9]{3,4})([0-9]{4})$/""\\1-\\2-\\3"$mtelNO);
echo '<br/><br/>';
 
$line07 = "홍길동 011-0002-0800";
$mtelNO = TelNumRegex($line07);
echo preg_replace("/([0-9]{3})([0-9]{3,4})([0-9]{4})$/""\\1-\\2-\\3"$mtelNO);
echo '<br/><br/>';
 
// 전화번호 정규식 반환 (전화번호 2개가 콤마로 구분되면 앞번호만 추출, 전화번호/성명 혼용이면 전화반호만 추출)
function TelNumRegex($inputNO){
    $pattern = '/01[01679][-]?\d{4}[-]?\d{4}/';
    preg_match_all($pattern,$inputNO,$output);
    //echo '<pre>';print_r($output[0]);echo '</pre>';
    $mtelNO = preg_replace("/[^0-9]/"""$output[0][0]);
    return $mtelNO;
}
 
?>
 

 

 

블로그 이미지

Link2Me

,