Форматирование номера телефона с использованием подстроки - PullRequest
0 голосов
/ 18 февраля 2012

Я хотел бы отформатировать номер телефона по-разному, в зависимости от того, является ли он номером мобильного или стационарным / домашним телефоном. Мобильные номера в Австралии начинаются с 04; Могу ли я сделать что-то вроде этого:

{if (substr($number, 0,2) == '04'}

apply this format #### ### ###

{else}

apply this format (##) #### #### or #### ###

В зависимости от того, был ли введен код города.

Я применил это к странице шаблона / html, и у меня возникли некоторые проблемы ... Мобильные номера распознаются и форматируются нормально, но другие номера не работают .... Это то, что я сделал

{if $listing.user[$v.caption]|substr:0:2== '04'}
{$listing.user[$v.caption]|substr:0:4} 
{$listing.user[$v.caption]|substr:4:3} 
{$listing.user[$v.caption]|substr:7}

{elseif $listing.user[$v.caption]|strlen>8}
({$listing.user[$v.caption]|substr:0:2}) 
{$listing.user[$v.caption]|substr:2:4} 
{$listing.user[$v.caption]|substr:6}

{else}
{$listing.user[$v.caption]|substr:0:4} 
{$listing.user[$v.caption]|substr:4:4}
{/if}

1 Ответ

0 голосов
/ 18 февраля 2012

Ваше заявление if должно сработать:

//if the first two digits are `04` then use the format: #### ### ###
if (substr($number, 0, 2) == '04') {
    $number = substr($number, 0, 4) . ' ' . substr($number, 4, 3) . ' ' . substr($number, 7);

//otherwise do more checks on the number
} else {

    //if the number is longer than seven digits then use the format: (##) #### ####
    if (strlen($number) > 7) {
        $number = '(' + substr($number, 0, 2) . ') ' . substr($number, 2, 4) . ' ' . substr($number, 6);

    //otherwise use the format: #### ###
    } else {
        $number = substr($number, 0, 4) . ' ' . substr($number, 4, 3);
    }
}
...