2015-02-05 2 views
2

현재 PHP 응용 프로그램에서 서식이 지정되지 않은 10 자리 오스트레일리아 전화 번호를 XX XXXX XXXX으로 포맷합니다. 데이터베이스의 전화 번호가 04으로 시작하고 XXXX XXX XXX과 같이 4,3,3으로 형식을 지정하면 2,4,4 형식이 유지됩니다. 모든 전화 번호는 데이터베이스에 XXXXXXXXXX으로 저장됩니다.형식 번호는 휴대 전화 또는 회사 전화에 따라 다릅니다

내 코드는 여기에 있습니다. 누군가가 좀 밝힐 수 있기를 바랍니다. if 문이 필요하다는 것을 알고 있지만 04에 대한 숫자의 처음 2 자리를 확인하는 방법을 잘 모릅니다.

<?php 

    $num = $record['busphone']; 
    $phoneformated = substr($num,0,2)." ".substr($num,4,4)." ".substr($num,6); 

    echo "Ph: " . $phoneformated; 

?> 

답변

0

if 문에서 문자열을 비교 if 문을 : 당신은 주거 수치를 포맷에 오타가 있었다

if (substr($num, 0, 2) == '04') { 
    $phoneformatted = substr($num, 0, 4) . " " . substr($num, 4, 3) . " " . substr($num, 7); 
} else { 
    $phoneformatted = substr($num, 0, 2) . " " . substr($num, 2, 4) . " " . substr($num, 6); 
} 

공지 사항, substr($num, 4, 4)substr($num, 2, 4)을해야합니다.

0

당신은 올바른 길을 가고 있습니다. 여기

$prefix = substr($num,0,2); 
if($prefix == '04') { 
    $phoneformated = $prefix . " ".substr($num,2,4)." ".substr($num,-6); 
} else { 
    $phoneformated = substr($num,0,4)." ".substr($num,2,3)." ".substr($num,-3); 
} 
+0

감사 힙 먼저 04. 위의 정규식 스타일을 발견했습니다 ... 어느 쪽이든 찬성/반대 의견이 있습니까? – cloudseeker

+0

뭔가 간단하면'substr'을 고수 할 것입니다. 정규식을 사용하면 성능이 저하되지만 여기에는 큰 차이가 없을 가능성이 있습니다 – Machavity

+0

굉장합니다! 해명 해줘서 고마워. :-) – cloudseeker

0

일치 내가 찾던 ... 정확히 정규식

$num = $record['busphone']; 
// check first 04 
if(preg_match('/^04/', $num)) { 
    // Your format 
    // xxxx xxx xxx 
} 
else { 
    // xxxxxxxxxx 
} 
+0

'+'다음에'{2}'가 올 것인가? '+'는 "1 이상"을 의미하고, "{2}"는 정확히 2를 의미합니다.''[04] {2}' '를 의미하면'00 ','40 ','44 ' – Barmar

+0

@Barmar 당신이 맞아요,이 macthed 값을 시도하지 않았어, 정말 감사합니다. –

관련 문제