Необходимо переформатировать записи телефонных номеров в скрипте PHP Formmail - PullRequest
5 голосов
/ 21 декабря 2008

У меня есть простое текстовое поле для «Номер телефона» в контактной форме на веб-сайте клиента. Скрипт formmail возвращает все, что пользователь вводит в поле. Например, они получат "000-000-0000", "0000000000", (000) 000-000 и т. Д. Клиент хотел бы получить все номера телефонов в этой форме: 000-000-0000. Может ли кто-нибудь предоставить простой сценарий, который бы убрал все посторонние знаки препинания, а затем снова вставил тире?

Я не программист, я просто дизайнер, поэтому я не могу предоставить ни один существующий код для оценки, хотя я буду рад послать скрипт formmail любому, кто может помочь.

Спасибо. А. Грант

Ответы [ 4 ]

9 голосов
/ 21 декабря 2008
<?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 голос
/ 16 августа 2011
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;
}
0 голосов
/ 16 января 2012

// формат номера телефона
// пример $ 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

0 голосов
/ 21 декабря 2008

как то так

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...