preg_replace çalışmıyor!

2 Cevap php

İşte benim Codeigniter fonksiyonu bulunuyor:

function edit_phone($phone)
{
            if (preg_match('/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/', $phone))
            {
	            return preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "$1-$2-$3", $phone); 
            }
            else
            {
	           $this->CI->validation->set_message('phone', "This must be a 10-digit USA phone number.");
                    return FALSE;       
            }
}

Bu / tamam girişini kontrol eder, ama db onu yeniden biçimlendirmek değildir doğrular.

Doğrulama harika! Ama neden bu standart bir telefon numarası dönen değil!

2 Cevap

Ben sorun SADECE formatında 1234567890 bir dizi çalışma olacağını düşünüyorum, ama preg_match () çağrı düzenli ifade dayalı, Kevin aynı zamanda gibi numaraları karşılamak için arıyor:

  • (123) 4567890
  • (123) 456 7890
  • 123-456-7890

Eğer öyleyse, preg_replace regex () gibi bir şey olması gerekir ...

preg_replace('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', "$1-$2-$3", $phone)

Eğer doldurmak için çalıştı, bize örnek verileri verebilir misiniz?

Ben aşağıdaki kod kullanılır:

$phone = "1234567890";
echo preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "$1-$2-$3", $phone);

ve var:

123-456-7890

hangi kadarıyla söyleyebilirim, kesinlikle doğru değildir.