在 PHP 中格式化电话号码
Minahil Noor
2023年1月30日
PHP
PHP Regex
在本文中,我们将讨论使用 PHP 格式化电话号码的不同方法。我们会将电话号码的格式从+13335092344 更改为 333-509-2344。
PHP 中使用 preg_match() 函数格式化电话号码
我们可以使用内置函数 preg_match() 来格式化电话号码。这个函数从一个字符串中搜索指定的模式。使用该函数的正确语法如下。
preg_match($pattern, $inputString, $matches, $flag, $offset);
内置函数 preg_match() 有五个参数。其详细参数如下
| 参数 | 说明 | |
|---|---|---|
$pattern |
强制 | 它是我们要在给定的字符串中检查的模式。 |
$inputString |
强制 | 它是我们要搜索给定模式的字符串。 |
$matches |
可选 | 如果给定了这个参数,那么函数将匹配过程的结果存储在其中。 |
$flags |
可选 | 该参数有两个选项。PREG_OFFSET_CAPTURE 和 PREG_UNMATCHED_AS_NULL。你可以阅读它的描述这里。 |
$offset |
可选 | 它告诉函数从哪里开始匹配过程。通常情况下,搜索从头开始。 |
这个函数返回一个布尔变量。如果给定的模式存在,它就返回 true。在提取数字后,我们将以所需的格式打印它们。
下面的程序显示了我们使用 PHP preg_match() 函数来格式化电话号码的方法。
<?php
$number = '+12333509234';
echo("The original number is $number.\n");
if( preg_match( '/^\+\d(\d{3})(\d{3})(\d{4})$/', $number, $matches ) )
{
$result = $matches[1] . '-' .$matches[2] . '-' . $matches[3];
}
echo("The formatted number is $result.");
?>
我们使用/^\+\d(\d{3})(\d{3})(\d{4})$/模式从字符串中提取号码。这个模式的解释如下。
^是匹配字符串开头的符号。\+匹配字符串中的+。+是 PHP 中的特殊字符,用于匹配前面模式的一次或多次。因此,我们需要在+之前加上\来转义这个特殊字符。\d用来匹配 0-9 的数字。d/d{3}表示它将匹配三个连续的数字。
输出:
The original number is +12333509234.
The formatted number is 233-350-9234.
在 PHP 中使用 sprintf() 函数来格式化电话号码
我们也可以使用 sprintf() 函数来格式化 PHP 中的电话号码。这个函数给出了几种格式化字符串的模式。我们将使用 substr() 函数提取几个字符串中的数字。之后,我们将使用 sprintf() 函数将这些字符串组合成所需的格式。使用该函数的正确语法如下。
sprintf($formatString, $string1, $string2, ..., $stringN)
sprintf() 函数接受 N+1 个参数。其参数的详细情况如下
| 参数 | 说明 | |
|---|---|---|
$formatString |
强制 | 它是将被应用到给定字符串的格式。 |
$string1, $string2, $stringN |
强制 | 它是我们要格式化的字符串。至少必须有一个字符串。 |
函数返回格式化后的字符串。我们将使用格式%s-%s-%s 将数字字符串组合在一起。将两个字符串组合在一起的程序如下。
<?php
$number = '+12333509234';
echo("The original number is $number.\n");
$result = sprintf("%s-%s-%s",
substr($number, 2, 3),
substr($number, 5, 3),
substr($number, 8));
echo("The formatted number is $result.");
?>
输出:
The original number is +12333509234.
The formatted number is 233-350-9234.
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe