如何将10位数的字符串格式化为电话号码?
2022-08-30 19:21:23
我有10个字符长字符串形式的数据库记录,例如4085551234。
我希望将这些格式格式化为以下格式:(408)555-1234。
我认为这是正则表达式相关的。我是编程新手,在这里完全是自学成才,所以任何与执行文本处理相关的资源也将不胜感激。谢谢!
我有10个字符长字符串形式的数据库记录,例如4085551234。
我希望将这些格式格式化为以下格式:(408)555-1234。
我认为这是正则表达式相关的。我是编程新手,在这里完全是自学成才,所以任何与执行文本处理相关的资源也将不胜感激。谢谢!
正则表达式对于这个来说绝对是过度的。如果您想获取“电话号码”并将其规范化为10位数字,那么这对正则表达式来说是一个很好的用途。要按照您的要求去做,只需执行以下操作:
echo '('.substr($data, 0, 3).') '.substr($data, 3, 3).'-'.substr($data,6);
由于您已经知道如何划分数据,因此只需使用substr或类似的东西来获取所需的部分。正则表达式对于匹配并不总是具有严格格式的字符串很有用。(比如可变数量的空格,它之前或之后的可变内容,额外的破折号等)。但是在您的情况下,输入始终严格格式化为10位,仅此而已,因此您不需要正则表达式的额外开销来格式化它。
请看这里: 设置电话号码格式
function format_phone($phone)
{
$phone = preg_replace("/^\d/", "", $phone);
if(strlen($phone) == 7)
return preg_replace("/(\d{3})(\d{4})/", "$1-$2", $phone);
elseif(strlen($phone) == 10)
return preg_replace("/(\d{3})(\d{3})(\d{4})/", "($1) $2-$3", $phone);
else
return $phone;
}