需要在PHP Formmail脚本中重新格式化电话号码条目

时间:2008-12-20 21:47:46

标签: php regex

我在客户的网站上的联系表单中有一个简单的“电话号码”文本字段。 formmail脚本返回用户键入字段的任何内容。例如,他们将收到“000-000-0000”,“0000000000”,(000)000-000等。客户希望以这种形式接收所有电话号码:000-000-0000。有人可以提供一个简单的脚本来删除所有无关的标点符号,然后重新插入破折号吗?

我不是程序员,只是一名设计师,因此我无法为任何人提供任何现有代码进行评估,但我很乐意通过电子邮件将formmail脚本发送给任何可以提供帮助的人。

感谢。 A.格兰特

4 个答案:

答案 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