在 PHP 中格式化電話號碼
Minahil Noor
2023年1月30日
在本文中,我們將討論使用 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.