我在客户的网站上的联系表单中有一个简单的“电话号码”文本字段。 formmail脚本返回用户键入字段的任何内容。例如,他们将收到“000-000-0000”,“0000000000”,(000)000-000等。客户希望以这种形式接收所有电话号码:000-000-0000。有人可以提供一个简单的脚本来删除所有无关的标点符号,然后重新插入破折号吗?
我不是程序员,只是一名设计师,因此我无法为任何人提供任何现有代码进行评估,但我很乐意通过电子邮件将formmail脚本发送给任何可以提供帮助的人。
感谢。 A.格兰特
答案 0 :(得分:9)
<?php
function formatPhone($number)
{
$number = preg_replace('/[^\d]/', '', $number); //Remove anything that is not a number
if(strlen($number) < 10)
{
return false;
}
return substr($number, 0, 3) . '-' . substr($number, 3, 3) . '-' . substr($number, 6);
}
foreach(array('(858)5551212', '(858)555-1212', '8585551212','858-555-1212', '123') as $number)
{
$number = formatPhone($number);
if($number)
{
echo $number . "\n";
}
}
?>
以上回报:
858-555-1212
858-555-1212
858-555-1212
858-555-1212
答案 1 :(得分:1)
function format_phone($phone)
{
$phone = preg_replace("/[^0-9]/", "", $phone);
if(strlen($phone) == 7)
return preg_replace("/([0-9]{3})([0-9]{4})/", "$1-$2", $phone);
elseif(strlen($phone) == 10)
return preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "($1) $2-$3", $phone);
else
return $phone;
}
答案 2 :(得分:0)
类似这样的事情
function formatPhone($number)
{
$number = str_replace(array('(', ')', '-', ' '), '', $number);
if (strlen($number) == 10)
{
$area = substr($number, 0, 3);
$part1 = substr($number, 3, 3);
$part2 = substr($number, 6);
return "$area-$part1-$part2";
}
else
{
return false;
}
}
如果传入的数字长度为10位,则会返回格式正确的数字。否则,它将返回FALSE
答案 3 :(得分:0)
//电话号码格式
//示例$ phone = '1111111111'
$area = substr($phone, 0, 3);
$part1 = substr($phone, 3, 3);
$part2 = substr($phone, 6);
$phone = '('.$area.') '.$part1.'-'.$part2;
echo $phone;
//看起来像(111)111-1111