Php 格式号码因手机或商务电话而异
目前,在我的php应用程序中,我有以下代码将未格式化的10位澳大利亚电话号码格式化为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
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
。使用正则表达式的性能很受欢迎,但差别不大!感谢您的澄清。:-)