Cita:
Iniciado por Hidek1 por lo personal.. no uso filter_var ya que al hacer pruebas con este te das cuenta de lo poco confiable que es..
+1
de algún modo por eso me fascinan las expresiones regulares, al menos dicho así son mas fiables que usar filter...
aquí mi sencillo aporte:
Código PHP:
/**
* Validar E-mail
*
* @param string $text Cadena
* @param boolean $multi Emails multiples?
* @param boolean $check Emplear checkdnsrr()?
* @return boolean
*/
function is_email($text, $multi = FALSE, $check = FALSE)
{
static $expr = '/^([\w\+\-:]+)(\.[\w\+\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i';
$text = preg_split('/[,;\|]+/', (string) $text);
if ( ! $multi && (sizeof($text) > 1)) return FALSE;
elseif (empty($text)) return FALSE;
foreach ($text as $value)
{
if ( ! preg_match($expr, $value)) return FALSE;
elseif ($check === TRUE && ! checkdnsrr(substr($value, strpos($value, '@') +1), 'MX')) return FALSE;
}
return TRUE;
}