Alguien me podría decir porque aparece este error en la validación de la dirección de correo? He sacado el ejemplo de las FAQ de PHP
Pero lo he tenido que adaptar porque la función eregi estaba deprecated
Código PHP:
Ver original
<?php // VALIDAR EMAIL function valida_email($email){ $email_correcto = "(^[0-9a-zA-Z]+(?:[._][0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(?:[._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,3})$"; $caracteres_extranos = "^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$"; // Validamos la dirección, usamos caracteres comunes echo("La dirección <i>$email</i> es válida."); return true; } /* Validamos la dirección, tomamos en cuenta que algunos proveedores permiten caracteres extraños.*/ echo("La dirección <i>$email</i> contiene caracteres extraños, pero comúnmente no afecta el script. Se tomará como válida."); } // Si nada de lo anterior pasa... return false else { echo("La dirección <i>$email</i> no es válida."); return false; } } valida_email($email); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Validar EMAIL</title> </head> <body> <form id="form" name="form" method="post" action="validar_email.php"> <label>EMAIL <input name="email" type="text" id="email" value="<?php echo $email;?>" /> </label> <p> <label> <input type="submit" name="Enviar" id="Enviar" value="Enviar" /> </label> </p> </form> </body> </html>
Me muestra el siguiente codigo de error
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\AppServ\www\00-laboratorio_test\secciones\formularios\validar_ema il.php on line 10
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\AppServ\www\00-laboratorio_test\secciones\formularios\validar_ema il.php on line 16
También he buscado en la red y me ha llamado la atención su simplicidad
http://fr.php.net/manual/en/function.filter-var.php
Me he puesto a testearla y creo que no cumple con todos los casos... ya que si pongo caracteres tipo %$ en el nombre de usuario del correo lo detecta como un correo válido

Es correcto? la habéis utilizado alguna vez? existen correos con % y $ en su dirección?
Código PHP:
Ver original
<?php function valida_email($email){ } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Validar EMAIL</title> </head> <body> <form id="form" name="form" method="post" action="validar_email2.php"> <label>EMAIL <input name="email" type="text" id="email" value="<?php echo $email;?>" /> </label> <?php if (valida_email($_POST['email'])){ echo "CORRECTO"; }else{ echo "INCORRECTO"; } ?> <label> <input type="submit" name="Enviar" id="Enviar" value="Enviar" /> </label> </form> </body> </html>
Muchas gracias de antemano