Cita:
Iniciado por muscularmente (..) El preg_match es considerablemente más rápido que ereg y mucho más potente. Por Ejemplo: (..)
Aparte de lo comentado sobre su rendimiento (que lo desconocía), hay una razón de peso para no usar regex POSIX (ereg y familia). El estandar POSIX no reconoce como alfanuméricos caracteres propios del español y otros idiomas (como las letras acentuadas, la Ñ, la Ç, etc). Y eso es para mí una razón suficiente como para desterrarlas y usar siempre regex PCRE (Perl compatibles, es decir, preg_*).
Para muestra, si queremos comprobar si una cadena está formada enteramente por letras o espacios y usamos:
Código PHP:
<?php
$cadena = "Qué tal compañero";
$patron = "^([[:alpha:]]| )*$";
echo "<pre>";
echo eregi( "$patron", $cadena ) ? "SI (POSIX)\n" : "NO (POSIX)\n";
echo preg_match( "/$patron/i", $cadena ) ? "SI (PCRE)\n" : "NO (PCRE)\n";
echo "</pre>";
?>
Obtendremos:
Siendo la misma expresión regular en ambos casos.
Un saludo.