2015-02-05 28 views
2

當前在我的php應用程序中,我有以下代碼將無格式的10位澳大利亞電話號碼格式設置爲XX XXXX XXXX。我想要做的是,如果數據庫中的電話號碼從04開始,那麼它將格式化爲4,3,3,如XXXX XXX XXX,否則將保持2,4,4格式。所有電話號碼都以XXXXXXXXXX存儲在數據庫中。格式編號根據手機或商務電話的不同而不同

這是我的代碼,所以希望有人可以擺脫一些光。我知道需要有一個if語句,但不確定如何檢查04的前兩位數字。

<?php 

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

    echo "Ph: " . $phoneformated; 

?> 

回答

0

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

你在正確的軌道上。下面是一個if聲明

$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

謝謝堆......正是我一直在尋找。我注意到了上面的正則表達式...有沒有優點/缺點? – cloudseeker

+0

對於這樣簡單的事情,我會堅持'substr'。有使用正則表達式的性能打擊,但差異可能不是主要在這裏 – Machavity

+0

太棒了!感謝您的澄清。 :-) – cloudseeker

0

符合04與正則表達式

$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你是對的,沒有嘗試過這些麻煩的價值觀,非常感謝你的指導。 –

相關問題