Bir PHP Formmail komut dosyası yeniden format telefon numarası girişlerini gerekiyor

3 Cevap php

Ben bir müşterinin web sitesinde bir iletişim formu "Telefon Numarası" için basit bir metin alanı var. Formmail komut alana ne olursa olsun kullanıcı türlerini döndürür. 000-000-0000: Örneğin, istemci bu formda tüm telefon numaralarını almak istiyorum vb "000-000-0000", "0000000000", (000) 000-000, alırsınız. Birisi tüm yabancı noktalama dışarı şerit olacak basit bir script sağlayabilir, sonra tire yeniden takın?

Ben yardımcı olabilecek herkese formmail komut dosyası e-posta mutlu olacak ama ben, bu yüzden herkes değerlendirmek için varolan herhangi bir kod sağlayamaz, sadece bir tasarımcı bir programcı değilim.

Thanks. A. Grant

3 Cevap

<?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";
      }
 }
 ?>

Yukarıdaki döner:

858-555-1212
858-555-1212
858-555-1212
858-555-1212

Böyle bir şey

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;
  }
}

Geçirilen 10 numara basamak uzunluğunda ise, düzgün biçimlendirilmiş bir sayı döndürür. Aksi takdirde, dönecektir FALSE

//phone number format
//example $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 gibi görünecek