Foros del Web » Programando para Internet » PHP »

CUál es mejor usar ???

Estas en el tema de CUál es mejor usar ??? en el foro de PHP en Foros del Web. Saludos Amigos, Una pregunta: Cómo se validan mejor las Expresiones Regulares? Con preg_match ó con FILTER_VALIDATE_REGEXP usando un filter_var ?? Alguna será más rápida que ...
  #1 (permalink)  
Antiguo 09/03/2011, 09:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 3
CUál es mejor usar ???

Saludos Amigos,

Una pregunta:

Cómo se validan mejor las Expresiones Regulares?

Con preg_match ó con FILTER_VALIDATE_REGEXP usando un filter_var ??

Alguna será más rápida que la otra ??

Gracias !!
  #2 (permalink)  
Antiguo 09/03/2011, 09:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: CUál es mejor usar ???

¿no te parece mas inteligente leer el manual y sacarte de la duda tu mismo?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/03/2011, 10:32
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: CUál es mejor usar ???

En el manual explican las Funciones, no comparaciones entre ambos !!
  #4 (permalink)  
Antiguo 09/03/2011, 10:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: CUál es mejor usar ???

Cita:
Iniciado por cambalachito Ver Mensaje
En el manual explican las Funciones, no comparaciones entre ambos !!
bueno, entonces has pruebas por ti mismo y comparte tus resultados!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 09/03/2011, 11:16
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: CUál es mejor usar ???

Resultados: (Hice un pequeño Script para probar)

Lo comparto !!

Código PHP:
<?php
$email 
"[email protected]";
$patron "/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU";
$tiempo_inicial microtime(true);

    if(
filter_var($emailFILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>$patron))) == true)
    {
        
$tiempo_filtro microtime(true) - $tiempo_inicial;
        echo 
number_format($tiempo_filtro6'.''').' > Utilizando FILTER_VAR<br><br>';
    }
    
    if (
preg_match($patron$email) == true)
    {
        
$tiempo_preg_match microtime(true) - $tiempo_inicial;
        echo 
number_format($tiempo_preg_match6'.''').' > Utilizando PREG_MATCH<br><br><br>';
    }
    
    echo 
'<strong>Conclusion</strong>: Utilizando FILTER VAR se validan las Expresiones Regulares m&aacute;s R&aacute;pido !!';
?>

Filter_var es el Ganador !!!
  #6 (permalink)  
Antiguo 09/03/2011, 11:49
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Respuesta: CUál es mejor usar ???

Cita:
Iniciado por pateketrueke Ver Mensaje
¿no te parece mas inteligente leer el manual y sacarte de la duda tu mismo?
Encuentro bastante válido el tema, ya que el muchacho tiene dudas y además añade el tema de la complejidad computabilidad de ambas funciones ("Alguna será más rápida que la otra").

Analizando el comportamiento de filter_var (cuando usa la constante "FILTER_VALIDATE_REGEXP") veo que realiza llamadas a las funciones pcre(Regular Expressions (Perl-Compatible)) según el código públicado, de cierto modo ambas utilizan la misma implementación para el tema de las expresiones regulares, por lo tanto creo que es casi despreciable la diferencia entre ellas para un mismo patron y texto. Lo que realmente importa es la complejidad del patrón junto al tamaño del string.

Respecto a la prueba de cambalachito, creo que tiene un pequeño error, ya que el tiempo inicial solo fue calculado una vez (antes de llamar de filter_var) entonces cuando tienes el tiempo de la ejecución de preg_match, esté tiempo ya incluye lo que costo llamar a filter_var, lo cuál está mal, hace el cambio y verás que preg_match es más rapido.

Saludos.
  #7 (permalink)  
Antiguo 09/03/2011, 12:10
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: CUál es mejor usar ???

Gracias DeeR !!!

Hago mi corrección en el código..... PREG_MATCH Gana !!!


Código PHP:
<?php
$email 
"[email protected]";
$patron "/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU";
$tiempo_inicial_filtro microtime(true);

    if(
filter_var($emailFILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>$patron))) == true)
    {
        
$tiempo_filtro microtime(true) - $tiempo_inicial_filtro;
        echo 
number_format($tiempo_filtro6'.''').' > Utilizando FILTER_VAR<br><br>';
    }

$tiempo_inicial_preg_match microtime(true);

    if (
preg_match($patron$email) == true)
    {
        
$tiempo_preg_match microtime(true) - $tiempo_inicial_preg_match;
        echo 
number_format($tiempo_preg_match6'.''').' > Utilizando PREG_MATCH<br><br><br>';
    }
    
    echo 
'<strong>Conclusion</strong>: Utilizando PREG_MATCH se validan las Expresiones Regulares m&aacute;s R&aacute;pido !!';
?>
Me imagino que al ser Preg_Match una funcion dirigida a las REGEX es más rapida, mientras que en Filter_var hay una mayor interpretacion del servidor !!

Gracias !
  #8 (permalink)  
Antiguo 09/03/2011, 12:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: CUál es mejor usar ???

¡excelente!

yo no digo que el tema haya sido invalido, pero se me hace injusto que el foro siempre tenga que aportar soluciones que siempre son sencillas de resolver por cuenta propia...

claro, en este caso no todos tenemos la experiencia tratando con ambas implementaciones, de modo que se exige participación del usuario, aportar no siempre es resolver dudas, también se puede aportar fomentando la investigación de forma conveniente...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 09/03/2011, 12:29
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: CUál es mejor usar ???

Cita:
Iniciado por pateketrueke Ver Mensaje
¡excelente!

yo no digo que el tema haya sido invalido, pero se me hace injusto que el foro siempre tenga que aportar soluciones que siempre son sencillas de resolver por cuenta propia...

claro, en este caso no todos tenemos la experiencia tratando con ambas implementaciones, de modo que se exige participación del usuario, aportar no siempre es resolver dudas, también se puede aportar fomentando la investigación de forma conveniente...
Gracias !!!

Etiquetas: Ninguno
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 2 personas




La zona horaria es GMT -6. Ahora son las 01:52.