格式编号因手机或商务电话而异

时间:2015-02-05 04:02:53

标签: php mysql if-statement number-formatting

目前在我的php应用程序中,我有以下代码将未格式化的10位数澳大利亚电话号码格式化为XX XXXX XXXX。我想要做的是,如果数据库中的电话号码以04开头,那么它将格式化为4,3,3,如XXXX XXX XXX,否则将保持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;

?>

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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)

答案 2 :(得分:0)

将第一个04与正则表达式匹配

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