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

ASG*_*ant 5 php regex

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

我不是程序员,只是设计师所以我不能提供任何现有代码供任何人评估,尽管我很乐意通过电子邮件将formmail脚本发送给任何可以提供帮助的人.

谢谢.A.格兰特

Unk*_*ech 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";
      }
 }
 ?>
Run Code Online (Sandbox Code Playgroud)

以上回报:

858-555-1212
858-555-1212
858-555-1212
858-555-1212
Run Code Online (Sandbox Code Playgroud)


cla*_*awr 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

如果传入的数字长度为 10 位,它将返回格式正确的数字。否则会返回FALSE