2012-10-24 9 views
5

mojego kodu jest:

<?php 
    $phone = 18311111111; 
    if(ereg("^\d{11}$",$phone)){ 
     echo "true"; 
    } else { 
     echo "false"; 
    } 
?> 

ja dostać fałszywe? czemu?

+4

Ostrzeżenie: 'ereg' został ODRADZANY od PHP 5.3.0. Opieranie się na tej funkcji jest bardzo odradzane. – OmnipotentEntity

Odpowiedz

4

Ponieważ ereg nie obsługuje \d, należy zamiast tego użyć [0-9].

I ereg jest przestarzałe, użyj zamiast preg_match, następnie można użyć \d.

if(preg_match("/^\d{11}$/",$phone)){ 
    echo "true"; 
} else { 
    echo "false"; 
} 
+0

Woops, liter: derepcated => przestarzałe –

+0

@AlexLunix Dzięki, naprawiono :) – xdazz

0

Na co warto, nie należy używać ereg (przestarzałe) ani preg_match dla takiego prostego testu; możesz użyć: ctype_digit():

if (ctype_digit($phone)) { 
    // $phone consists of only digits 
} else { 
    // non-digit characters were found in $phone 
} 
Powiązane problemy