Regex hatası: PHP 'Uyarı: ereg () [function.ereg] REG_ERANGE'

4 Cevap php

Aşağıdaki kod bana bu gizemli hata veriyor, ve ben bunu anlayamaz. Düzenli ifadeler için yeni ve böylece sonuç stumped duyuyorum. Düzenli ifade herhangi bir uluslararası telefon numarası doğrulama gerekmektedir.

Herhangi bir yardım çok takdir.

function validate_phone($phone)
{
	$phoneregexp ="^(\+[1-9][0-9]*(\([0-9]*\)|-[0-9]*-))?[0]?[1-9][0-9\- ]*$";

	$phonevalid = 0;

	if (ereg($phoneregexp, $phone))
	{
		$phonevalid = 1;
	}else{
		$phonevalid = 0;
	}
}

4 Cevap

Bu PHP ise, regex tırnak içine alınmalıdır. Furthermore, what's preg? Şunu mu demek istediniz preg_match

Başka bir şey. PHP boolean değerleri bilir. Kanonik çözüm yerine bu gibi görünecektir:

return preg_match($regex, $phone) !== 0;

EDIT: Veya kullanarak ereg:

return ereg($regex, $phone) !== FALSE;

(Burada, karşı açık test FALSE kesinlikle gerekli değil ama ereg başarısı üzerine bir sayı döndürür beri içine değerini coercing güvenli hissediyorum bool).

Hmm iyi yapıştırılan kod ben eksik tırnak, eksik sınırlayıcı ve preg_match Değiştirilen Preg ekleyerek kadar sabit, oldukça geçerli değil. Ben uyarı alamadım.

Edit: diğer yorum gördükten sonra, "ereg" değil "Gebelik" ... uyarı verir geliyordu. Bunun yerine, preg_match() kullanmayı deneyin ;)

<?php
function validate_phone($phone)
{
        $phoneregexp ='/^(\+[1-9][0-9]*(\([0-9]*\)|-[0-9]*-))?[0]?[1-9][0-9\- ]*$/';

        $phonevalid = 0;

        if (preg_match($phoneregexp, $phone))
        {
                $phonevalid = 1;
        }else{
                $phonevalid = 0;
        }
}

validate_phone("123456");
?>

Bu sizin RE [0-9\\- ] parçası - bu "-" düzgün kaçış değil. [0-9 -] onu değiştirmek ve (bir "-" bir karakter sınıfının son pozisyonda bir dizi şartname, literal değil, bir parçası olarak kabul edilir) Tamam olmalıdır.

Sadece bazı referans malzeme sağlamak için lütfen okuyun

veya POSIX regexp sopa ile isterseniz:

Doğru örnek kod, daha önce yukarıda verilmiştir.