Validar e-mail:
function verify_email($email){
if(!preg_match('/^[_A-z0-9-]+((\.|\+)[_A-z0-9-]+)*@[A-z0-9-]+(\.[A-z0-9-]+)*(\.[A-z]{2,4})$/',$email)){
return false;
} else {
return $email;
}
}
function EmailValidation($email)
{
$email = htmlspecialchars(stripslashes(strip_tags($email))); //parse unnecessary characters to prevent exploits
if ( eregi ( '[a-z||0-9]@[a-z||0-9].[a-z]', $email ) )
{ //checks to make sure the email address is in a valid format
$domain = explode( "@", $email ); //get the domain name
if ( @fsockopen ($domain[1],80,$errno,$errstr,3))
{
//if the connection can be established, the email address is probably valid
return true;
} else
{
return false; //if a connection cannot be established return false
}
return false; //if email address is an invalid format return false
}
}
function validar_email($email) {
list($local, $domain) = explode("@", $email);
$pattern_local = '^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$';
$pattern_domain = '^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$';
$match_local = eregi($pattern_local, $local);
$match_domain = eregi($pattern_domain, $domain);
if ($match_local && $match_domain) {
return 1;
} else {
return 0;
}
}
En PHP 5:
Se añade la funcionalidad de filter_var
if(filter_var("prueba@dominio.com", FILTER_VALIDATE_EMAIL)){
echo "Ok";
} else {
echo "Error";
}
Usando filter _var y comprobando que tenga un punto el dominio con una expresión regular:
function validateEmailAddress($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+\./', $email);
}
Ejemplo Wordpress (usando expresiones regulares)
function is_email($email) {
if( strlen( $email ) < 3 ){
return false;
}
if( strpos( $email, '@', 1 ) === false ){
return false;
}
list( $local, $domain ) = explode( '@', $Valor, 2 );
if( !preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ){
return false;
}
if( preg_match( '/\.{2,}/', $domain ) ){
return false;
}
if( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ){
return false;
}
$subs = explode( '.', $domain );
if( 2 > count( $subs ) ){
return false;
}
foreach ( $subs as $sub ) {
if( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ){
return false;
}
if( !preg_match('/^[a-z0-9-]+$/i', $sub ) ){
return false;
}
}
return true;
}
Verificar e-mail mirando registro MX si es válido, útil para separar nombre y dominio de un e-mail
function verify_email_dns($email){
// This will split the email into its front
// and back (the domain) portions
list($name, $domain) = explode('@',$email);
if(!checkdnsrr($domain,'MX')){
// No MX record found
return false;
} else {
// MX record found, return email
return $email;
}
}
$string = 'some_name@somedomain.com';
$res = explode('@', $string);
// array
echo $res[0];
$name = $res[0];
echo $name;
substr
$mail = "some_name@somedomain.com";
echo substr($mail, 0, strpos($mail, '@') );
explode
list($name, $domain) = explode('@', $mail);
echo $name;
Muy muy bueno este material para depurar Bases de Datos, sobretodo lo de la comprobacion de registros MX.
Que ha pasado, un aporte del el-brujo.
Se nota que hace rato que no paso por el foro.
Excelente.
Saludos
De todas creo que esta es la mas rápida:
if(filter_var("prueba@dominio.com", FILTER_VALIDATE_EMAIL)){
echo "Ok";
} else {
echo "Error";
}
Igual la 2º y 3º no es recomendado su uso ya que ocupan eregi para su funcionamiento y esa funcion es obsoleta desde PHP >= 5.3.0.
Saludos.
es la mas rápida... ,
y la más segura (aunque en estos tiempos, la que menos fallos se le puedan encontrar) ??
salu2.