手机或商务电话的号码格式不同


Format number different depending on mobile or business phone

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

比较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)

用正则表达式匹配第一个04

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

你走在了正确的轨道上。这是一个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);
}