我有一个存储在数据库中的电话号码,如:
5555555555
我希望将其格式化为:
(555)555-5555
使用php我有以下代码:
<?php
$data = $order['contactphone'];
if( preg_match( '/^\+\d(\d{3})(\d{3})(\d{4})$/', $data, $matches ) )
{
$result = $matches[1] . '-' .$matches[2] . '-' . $matches[3];
echo $result;
}
?>
这一次都没有返回任何内容。甚至没有错误。我怎么能这样做?
答案 0 :(得分:1)
将正则表达式从'/^\+\d(\d{3})(\d{3})(\d{4})$/'
更改为'/^(\d{3})(\d{3})(\d{4})$/'
,即:
if( preg_match( '/^(\d{3})(\d{3})(\d{4})$/', $data, $matches ) )
{
$result = '(' . $matches[1] . ') ' .$matches[2] . '-' . $matches[3];
echo $result;
}
答案 1 :(得分:0)
这是我过去使用过的。不像我想的那样优于正则表达式,但它可以完成工作:
/**
* Formats a phone number
* @param string $phone
*/
static public function formatPhoneNum($phone){
$phone = preg_replace("/[^0-9]*/",'',$phone);
if(strlen($phone) != 10) return(false);
$sArea = substr($phone,0,3);
$sPrefix = substr($phone,3,3);
$sNumber = substr($phone,6,4);
$phone = "(".$sArea.") ".$sPrefix."-".$sNumber;
return($phone);
}
P.S。我没有写这篇文章,这只是我六年前抓到的东西。