Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 格式号码因手机或商务电话而异_Php_Mysql_If Statement_Number Formatting - Fatal编程技术网

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

Php 格式号码因手机或商务电话而异,php,mysql,if-statement,number-formatting,Php,Mysql,If Statement,Number Formatting,目前,在我的php应用程序中,我有以下代码将未格式化的10位澳大利亚电话号码格式化为XX-XXXX-XXXX。我想做的是,如果数据库中的电话号码以04开头,那么它将像XXXX XXX XXX一样将其格式化为4,3,3,否则将保持2,4,4格式。所有电话号码都以xxxxxxxxx的形式存储在数据库中 这是我的代码,希望有人能透露一些信息。我知道需要一个if语句,但不确定如何检查04的前两位数字 <?php $num = $record['busphone']; $phone

目前,在我的php应用程序中,我有以下代码将未格式化的10位澳大利亚电话号码格式化为
XX-XXXX-XXXX
。我想做的是,如果数据库中的电话号码以
04
开头,那么它将像
XXXX XXX XXX
一样将其格式化为4,3,3,否则将保持2,4,4格式。所有电话号码都以
xxxxxxxxx
的形式存储在数据库中

这是我的代码,希望有人能透露一些信息。我知道需要一个if语句,但不确定如何检查
04
的前两位数字

<?php

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

    echo "Ph: " . $phoneformated;

?>

你走对了方向。这里有一个
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);
}

比较
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)
将First 04与regex匹配

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

什么是
+
后面跟着
{2}
+
表示“1个或多个”,
{2}
表示正好2个。如果您的意思是
[04]{2}
,那么这将匹配
00
40
,以及
44
。@Barmar您是对的,没有尝试这些macthed值,非常感谢您的指导。谢谢您。。。正是我想要的。我注意到上面有一个正则式的。。。这两种方法都有利弊吗?对于这么简单的东西,我坚持使用
substr
。使用正则表达式的性能很受欢迎,但差别不大!感谢您的澄清。:-)