Foros del Web » Programando para Internet » PHP »

Como valida numero de telefono

Estas en el tema de Como valida numero de telefono en el foro de PHP en Foros del Web. Hola tengo una idea muy pobre de PHP por lo cual mi duda, estoy usando un fomulario de contactos que tiene el codigo que copio ...
  #1 (permalink)  
Antiguo 28/03/2012, 21:56
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Como valida numero de telefono

Hola tengo una idea muy pobre de PHP por lo cual mi duda, estoy usando un fomulario de contactos que tiene el codigo que copio abajo y no logro dar como deberia ser la forma de escribir el numero de telefono para que me lo valide, pero mas alla de eso que me gustaria saber tambien quiero saber como hacerlo para variarlo por ejemplo si quiero que valide un numero de telefono como 0221-4226922 o 011-4959-0200, alguen me puede ayudar!?
Muchas Gracias!

demoche

Código PHP:
<?php
require ("ClassMathGuard.php");
if(
$_POST)
{
$javascript_enabled trim($_POST['browser_check']);
$department trim($_POST['dept']);
$name trim($_POST['name']);
$email trim($_POST['email']);
$phno trim($_POST['phno']);
$subject trim($_POST['subject']);
$msg trim($_POST['msg']);
$selfcopy trim($_POST['selfcopy']);


//mail settings
$sales_address "[email protected]";
$support_address "[email protected]";
$billing_address "[email protected]";
$headers "From: ".$email;
$message "Contact name: $name\nContact Email: $email\nContact Phone: $phno\n\nMessage: $msg";

if (
MathGuard :: checkResult($_POST['mathguard_answer'], $_POST['mathguard_code'])) { 

    if ( 
$department == "sales"$to $sales_address;
    elseif ( 
$department == "support"$to $support_address;
    elseif ( 
$department == "billing"$to $billing_address;

    if ( 
$name == "" )
    {
        
$result "Name field is required";
    }
    elseif (!
preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/"$email)) 
    {
        
$result "Enter a valid email address";
    }
    elseif(!
preg_match("/^[0-9]{2}-[0-9]{10}$/"$phno)) //check for a pattern of 91-0123456789
    
{
        
$result "Enter a valid phone number";
    }
    elseif ( 
$subject == "" )
    {
        
$result "Subject is required";
    }
    elseif ( 
strlen($msg) < 10 )
    {
        
$result "Write more than 10 characters";
    }
    else
    {    
        
            
mail($to$subject$message$headers);
        if( 
$selfcopy == "yes" )
            
mail($email$subject$message$headers);
        
$result "Your mail has been sent succesfully!";
        
    }
}
else 
$result "Bad Answer, Please try again!";
    
    if(
$javascript_enabled == "true") {
        echo 
$result;
        die();
    }

}
?>
  #2 (permalink)  
Antiguo 28/03/2012, 23:05
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Exclamación Respuesta: Como valida numero de telefono

Prueba con el siguiente código:

Código PHP:
<?php

    $var 
'011-4959-0200';

    
$pattern '/^([0-9]{4})(-)([0-9]{7})$/';
    
$pattern_2 '/^([0-9]{3})(-)([0-9]{4})(-)([0-9]{4})$/';

    if((
preg_match($pattern$var)) || (preg_match($pattern_2$var))){

        echo(
'Correcto.');
    } else{

        echo(
'Incorrecto.');
    }
?>
Si no entiendes algo en especial o simplemente tienes más condiciones para la expresión regular, me indicas y con más gusto te ayudo.

Buena suerte.
__________________
Programar dejó de ser una profesión acusada en la oscuridad y disfrutada fríamente... para convertirse en un arte.
  #3 (permalink)  
Antiguo 28/03/2012, 23:30
Avatar de Chico3001  
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: Como valida numero de telefono

Yo valido copiando el telefono a una variable auxiliar, removiendo todos los caracteres diferentes a numeros y contando el numero de digitos con strlen... en Mexico tienen que ser 10
  #4 (permalink)  
Antiguo 28/03/2012, 23:40
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Como valida numero de telefono

Cita:
Iniciado por JairLizcano Ver Mensaje
Prueba con el siguiente código:

Código PHP:
<?php

    $var 
'011-4959-0200';

    
$pattern '/^([0-9]{4})(-)([0-9]{7})$/';
    
$pattern_2 '/^([0-9]{3})(-)([0-9]{4})(-)([0-9]{4})$/';

    if((
preg_match($pattern$var)) || (preg_match($pattern_2$var))){

        echo(
'Correcto.');
    } else{

        echo(
'Incorrecto.');
    }
?>
Si no entiendes algo en especial o simplemente tienes más condiciones para la expresión regular, me indicas y con más gusto te ayudo.

Buena suerte.

Uh genial por la ayuda, pero incluido en el codigo que yo tengo como seria,
consulto esto porque es el codigo con el que funciona el formulario.
Gracias de nuevo
  #5 (permalink)  
Antiguo 29/03/2012, 00:32
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Exclamación Respuesta: Como valida numero de telefono

Prueba con lo siguiente:

Código PHP:
<?php 
require ("ClassMathGuard.php"); 
if(
$_POST

$javascript_enabled trim($_POST['browser_check']); 
$department trim($_POST['dept']); 
$name trim($_POST['name']); 
$email trim($_POST['email']); 
$phno trim($_POST['phno']); 
$subject trim($_POST['subject']); 
$msg trim($_POST['msg']); 
$selfcopy trim($_POST['selfcopy']); 


//mail settings 
$sales_address "[email protected]"
$support_address "[email protected]"
$billing_address "[email protected]"
$headers "From: ".$email
$message "Contact name: $name\nContact Email: $email\nContact Phone: $phno\n\nMessage: $msg"

if (
MathGuard :: checkResult($_POST['mathguard_answer'], $_POST['mathguard_code'])) {  

    if ( 
$department == "sales"$to $sales_address
    elseif ( 
$department == "support"$to $support_address
    elseif ( 
$department == "billing"$to $billing_address

    if ( 
$name == "" 
    { 
        
$result "Name field is required"
    } 
    elseif (!
preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/"$email))  
    { 
        
$result "Enter a valid email address"
    } 
    elseif(!(
preg_match("/^([0-9]{4})(-)([0-9]{7})$/"$phno)) || !(preg_match('/^([0-9]{3})(-)([0-9]{4})(-)([0-9]{4})$/'$phno))) //check for a pattern of 91-0123456789 
    

        
$result "Enter a valid phone number"
    } 
    elseif ( 
$subject == "" 
    { 
        
$result "Subject is required"
    } 
    elseif ( 
strlen($msg) < 10 
    { 
        
$result "Write more than 10 characters"
    } 
    else 
    {     
         
            
mail($to$subject$message$headers); 
        if( 
$selfcopy == "yes" 
            
mail($email$subject$message$headers); 
        
$result "Your mail has been sent succesfully!"
         
    } 

else 
$result "Bad Answer, Please try again!"
     
    if(
$javascript_enabled == "true") { 
        echo 
$result
        die(); 
    } 


?>
Ahora bien, no sé realmente a qué formato de números lo estés adaptando, la expresión regular te está indicando que sí o sí debe ser la primera línea de número de 4, un guión (-) y la siguiente línea de 7 caracteres, posteriormente si tiene más o menos caracteres será considerada como incorrecta (para el caso del primer patrón).

Si tiene los rangos de valores, con gusto te adaptaría la expresión regular.

Buena suerte.
__________________
Programar dejó de ser una profesión acusada en la oscuridad y disfrutada fríamente... para convertirse en un arte.
  #6 (permalink)  
Antiguo 31/03/2012, 23:51
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Como valida numero de telefono

Genial me sirvio un monton, ahora si quier agregarle un campo para el numero de celular, supongo que deberia ser asi


Código PHP:
        elseif(!preg_match("/^[0-9]{3}-[0-9]{8}$/", $celno)) //check for a pattern of 91-0123456789 ej: 221-4593367
    {
        $result = "Enter a valid celphone number";
    }
/////////////////////////////////////////////
<label class="cel">Celphone no <span class="form">ej: 221-4593367</span><br /><input class="text" name="celno" type="text" value="<?php echo $celno?>" /><br /></label>
probe y no anda, que esta mal? y como podria hacer para indicarle que el numero a ingresar debe ser un numero de 10 caracteres.
El problema que veo es que como algunos celulares en Argentina tiene el prefijo de 2 numeros y otros con tres, creo que seria mas simple que deba tipear el numero de corrido sin el "-", no?

De todas maner muchas gracias por la ayuda!
Abrazos
demoche
  #7 (permalink)  
Antiguo 01/04/2012, 04:40
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Exclamación Respuesta: Como valida numero de telefono

Intenta con esto:

Código PHP:
elseif(!preg_match("/^(([0-9]{2}-[0-9]{8})|([0-9]{3}-[0-9]{7}))$/"$celno)) //check for a pattern of 91-0123456789 ej: 221-4593367 
    

        
$result "Enter a valid celphone number"
    } 
Ello te permitiría combinaciones de 7 y 3 números con el guión (-) separándolos o bien 8 y 2 número con el caracter de separación. Estrictamente sólo funcionaría en esos casos.

Buena suerte.
__________________
Programar dejó de ser una profesión acusada en la oscuridad y disfrutada fríamente... para convertirse en un arte.

Última edición por JairLizcano; 01/04/2012 a las 05:22
  #8 (permalink)  
Antiguo 02/04/2012, 22:39
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Como valida numero de telefono

Hola JairLizcano

Probe tipiando por ejemplo 12-12345678 y 123-1234567 no anda...o sigo sin entender algo?
Gracias por tu tiempo desde ya
  #9 (permalink)  
Antiguo 02/04/2012, 22:43
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Respuesta: Como valida numero de telefono

Acabo de probar con esos mismos mismo datos y evidentemente ha funcionado.

Es probable que hayas implementado mal la expresión regular. A ver donde la indicas.

Buena suerte.
__________________
Programar dejó de ser una profesión acusada en la oscuridad y disfrutada fríamente... para convertirse en un arte.
  #10 (permalink)  
Antiguo 03/04/2012, 17:17
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Como valida numero de telefono

Probé así :(
Código PHP:
Ver original
  1. <?php
  2. require ("ClassMathGuard.php");
  3. if($_POST)
  4. {
  5. $javascript_enabled = trim($_POST['browser_check']);
  6. $department = trim($_POST['dept']);
  7. $name = trim($_POST['name']);
  8. $email = trim($_POST['email']);
  9. $phno = trim($_POST['phno']);
  10. $subject = trim($_POST['subject']);
  11. $msg = trim($_POST['msg']);
  12. $selfcopy = trim($_POST['selfcopy']);
  13.  
  14.  
  15. //mail settings
  16. $sales_address = "[email protected]";
  17. $support_address = "[email protected]";
  18. $billing_address = "[email protected]";
  19. $headers = "From: ".$email;
  20. $message = "Contact name: $name\nContact Email: $email\nContact Phone: $phno\n\nMessage: $msg";
  21.  
  22. if (MathGuard :: checkResult($_POST['mathguard_answer'], $_POST['mathguard_code'])) {
  23.  
  24.     if ( $department == "sales") $to = $sales_address;
  25.     elseif ( $department == "support") $to = $support_address;
  26.     elseif ( $department == "billing") $to = $billing_address;
  27.  
  28.     if ( $name == "" )
  29.     {
  30.         $result = "Name field is required";
  31.     }
  32.     elseif (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $email))
  33.     {
  34.         $result = "Enter a valid email address";
  35.     }
  36.     elseif(!preg_match("/^(([0-9]{2}-[0-9]{8})|([0-9]{3}-[0-9]{7}))$/", $celno)) //check for a pattern of 91-0123456789 ej: 221-4593367
  37.     {
  38.         $result = "Tipia bien el numero de celu!";
  39.     }
  40.         elseif(!preg_match("/^[0-9]{3}-[0-9]{8}$/", $celno)) //check for a pattern of 91-0123456789 ej: 221-4593367
  41.     {
  42.         $result = "Enter a valid celphone number";
  43.     }
  44.     elseif ( $subject == "" )
  45.     {
  46.         $result = "Subject is required";
  47.     }
  48.     elseif ( strlen($msg) < 10 )
  49.     {
  50.         $result = "Write more than 10 characters";
  51.     }
  52.     else
  53.     {  
  54.        
  55.             mail($to, $subject, $message, $headers);
  56.         if( $selfcopy == "yes" )
  57.             mail($email, $subject, $message, $headers);
  58.         $result = "Your mail has been sent succesfully!";
  59.        
  60.     }
  61. }
  62. else $result = "Bad Answer, Please try again!";
  63.    
  64.     if($javascript_enabled == "true") {
  65.         echo $result;
  66.         die();
  67.     }
  68.  
  69. }
  70. ?>

Que hice mal?
Gracias de nuevo!
  #11 (permalink)  
Antiguo 04/04/2012, 00:41
Avatar de Chico3001  
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: Como valida numero de telefono

No te compliques tanto... el telefono debe tener obligatoriamente 11 numeros, y no sabes si la persona pone guiones, parentesis, asteriscos o letras.... asi que comparar contra todas las posibilidades es imposible... primero filtra todo menos los numeros y luego mide la longitud...


Código PHP:
$temp preg_replace("/[^0-9]/","",$celno);

if (
strlen($temp) != 11)
    echo 
"Correcto";
else
    echo 
"Incorrecto"
  #12 (permalink)  
Antiguo 04/04/2012, 19:57
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Como valida numero de telefono

Si es verdad lo que decis pero como adapto el codigo que me pasaste para el mio y hacer lo mismo para el numero de telefono.
Disculpa mi pregunta pero como ya dije se poco de PHP y tengo que adaptarlo para que me funcione el que uso, me podes ayudar?
Gracias
  #13 (permalink)  
Antiguo 07/04/2012, 22:56
Avatar de Chico3001  
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico, DF
Mensajes: 112
Antigüedad: 12 años, 7 meses
Puntos: 12
Respuesta: Como valida numero de telefono

Alli esta...

Código PHP:
<?php
require ("ClassMathGuard.php");

function 
validar_tel($tel) {
    
$tel preg_replace("/[^0-9]/","",$tel);

    if ((
strlen($tel) == 11) || (strlen($tel) == 10))
        return 
TRUE;
    else
        return 
FALSE
}


if(
$_POST)
{
    
$javascript_enabled trim($_POST['browser_check']);
    
$department trim($_POST['dept']);
    
$name trim($_POST['name']);
    
$email trim($_POST['email']);
    
$phno trim($_POST['phno']);
    
$subject trim($_POST['subject']);
    
$msg trim($_POST['msg']);
    
$selfcopy trim($_POST['selfcopy']);

    
//mail settings
    
$sales_address "[email protected]";
    
$support_address "[email protected]";
    
$billing_address "[email protected]";
    
$headers "From: ".$email;
    
$message "Contact name: $name\nContact Email: $email\nContact Phone: $phno\n\nMessage: $msg";

    if (
MathGuard :: checkResult($_POST['mathguard_answer'], $_POST['mathguard_code'])) {

        if ( 
$department == "sales"$to $sales_address;
        elseif ( 
$department == "support"$to $support_address;
        elseif ( 
$department == "billing"$to $billing_address;

        if ( 
$name == "" )
        {
            
$result "Name field is required";
        }
        elseif (!
preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/"$email))
        {
            
$result "Enter a valid email address";
        }
        elseif(!
validar_tel($phno)) //check for a pattern of 91-0123456789
        
{
            
$result "Enter a valid phone number";
        }
        elseif ( 
$subject == "" )
        {
            
$result "Subject is required";
        }
        elseif ( 
strlen($msg) < 10 )
        {
            
$result "Write more than 10 characters";
        }
        else
        {  
            
mail($to$subject$message$headers);
            if( 
$selfcopy == "yes" )
            
mail($email$subject$message$headers);
            
$result "Your mail has been sent succesfully!";
        }
    }
    else 
$result "Bad Answer, Please try again!";

    if(
$javascript_enabled == "true") {
        echo 
$result;
        die();
    }

}
?>
  #14 (permalink)  
Antiguo 07/04/2012, 23:38
Avatar de demoche  
Fecha de Ingreso: junio-2006
Mensajes: 124
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Como valida numero de telefono

Cita:
Iniciado por Chico3001 Ver Mensaje
Alli esta...

Código PHP:
<?php
require ("ClassMathGuard.php");

function 
validar_tel($tel) {
    
$tel preg_replace("/[^0-9]/","",$tel);

    if ((
strlen($tel) == 11) || (strlen($tel) == 10))
        return 
TRUE;
    else
        return 
FALSE
}


if(
$_POST)
{
    
$javascript_enabled trim($_POST['browser_check']);
    
$department trim($_POST['dept']);
    
$name trim($_POST['name']);
    
$email trim($_POST['email']);
    
$phno trim($_POST['phno']);
    
$subject trim($_POST['subject']);
    
$msg trim($_POST['msg']);
    
$selfcopy trim($_POST['selfcopy']);

    
//mail settings
    
$sales_address "[email protected]";
    
$support_address "[email protected]";
    
$billing_address "[email protected]";
    
$headers "From: ".$email;
    
$message "Contact name: $name\nContact Email: $email\nContact Phone: $phno\n\nMessage: $msg";

    if (
MathGuard :: checkResult($_POST['mathguard_answer'], $_POST['mathguard_code'])) {

        if ( 
$department == "sales"$to $sales_address;
        elseif ( 
$department == "support"$to $support_address;
        elseif ( 
$department == "billing"$to $billing_address;

        if ( 
$name == "" )
        {
            
$result "Name field is required";
        }
        elseif (!
preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/"$email))
        {
            
$result "Enter a valid email address";
        }
        elseif(!
validar_tel($phno)) //check for a pattern of 91-0123456789
        
{
            
$result "Enter a valid phone number";
        }
        elseif ( 
$subject == "" )
        {
            
$result "Subject is required";
        }
        elseif ( 
strlen($msg) < 10 )
        {
            
$result "Write more than 10 characters";
        }
        else
        {  
            
mail($to$subject$message$headers);
            if( 
$selfcopy == "yes" )
            
mail($email$subject$message$headers);
            
$result "Your mail has been sent succesfully!";
        }
    }
    else 
$result "Bad Answer, Please try again!";

    if(
$javascript_enabled == "true") {
        echo 
$result;
        die();
    }

}
?>
GRACIAS Chico3001 FUNCIONO DE MARAVILLAS!
Saludos!

Etiquetas: contacto, teléfono, validar+form
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:15.