在PHP中将破折号添加到电话号码的最佳方法是什么?我有一个格式的数字,xxxxxxxxxx我希望它的格式为xxx-xxx-xxxx.这仅适用于10位美国电话号码.
Thi*_*ilo 38
$number = "1234567890";
$formatted_number = preg_replace("/^(\d{3})(\d{3})(\d{4})$/", "$1-$2-$3", $number);
Run Code Online (Sandbox Code Playgroud)
编辑:要更加通用并规范化以各种格式提供的美国电话号码(这应该是常见的做法 - 没有理由强迫人们输入特定格式的电话号码,因为你所有的'感兴趣的是数字,你可以简单地丢弃其余部分):
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";
Run Code Online (Sandbox Code Playgroud)
$number = '1234567890';
if(ctype_digit($number) && strlen($number) == 10) {
$number = substr($number, 0, 3) .'-'.
substr($number, 3, 3) .'-'.
substr($number, 6);
}
Run Code Online (Sandbox Code Playgroud)
或者,如果你出于某种原因想要避免使用substr,但这更耗资源(尽管不是很多 - 选择你喜欢的那个):
$number = '1234567890';
if(ctype_digit($number) && strlen($number) == 10) {
$parts = str_split($number, 3);
$number = $parts[0] .'-'. $parts[1] .'-'. $parts[3].$parts[4];
}
Run Code Online (Sandbox Code Playgroud)