在 PHP 中为美国电话号码添加短划线的函数
2022-08-30 23:59:08
在PHP中向电话号码添加破折号的最佳方法是什么?我有一个数字的格式,我希望它的格式是xxx-xxx-xxxx。这仅适用于 10 位数的美国电话号码。xxxxxxxxxx
在PHP中向电话号码添加破折号的最佳方法是什么?我有一个数字的格式,我希望它的格式是xxx-xxx-xxxx。这仅适用于 10 位数的美国电话号码。xxxxxxxxxx
$number = "1234567890";
$formatted_number = preg_replace("/^(\d{3})(\d{3})(\d{4})$/", "$1-$2-$3", $number);
编辑:为了更加通用,并以各种格式中的任何一种规范化美国电话号码(这应该是常见的做法 - 没有理由强迫人们以特定格式输入电话号码,因为您感兴趣的只是数字,您可以简单地丢弃其余部分):
function localize_us_number($phone) {
$numbers_only = preg_replace("/[^\d]/", "", $phone);
return preg_replace("/^1?(\d{3})(\d{3})(\d{4})$/", "$1-$2-$3", $numbers_only);
}
echo localize_us_number("5551234567"), "\n";
echo localize_us_number("15551234567"), "\n";
echo localize_us_number("+15551234567"), "\n";
echo localize_us_number("(555) 123-4567"), "\n";
echo localize_us_number("+1 (555) 123-4567"), "\n";
echo localize_us_number("Phone: 555 1234567 or something"), "\n";
$number = '1234567890';
if(ctype_digit($number) && strlen($number) == 10) {
$number = substr($number, 0, 3) .'-'.
substr($number, 3, 3) .'-'.
substr($number, 6);
}
或者,如果您出于某种原因想要避免使用 substr:
$number = '1234567890';
if(ctype_digit($number) && strlen($number) == 10) {
$parts = str_split($number, 3);
$number = $parts[0] .'-'. $parts[1] .'-'. $parts[3].$parts[4];
}