2013-07-24 84 views
0

我目前正在研究PHP脚本来检查和纠正错误的键入的电子邮件地址。 如果输入的是:htomail.com,该脚本将其更改为hotmail.com自动更正电子邮件地址

我用下面的代码(所有可能的拼写错误):

$input = '[email protected]'; 
$pattern = '/htomail.com/'; 
$replacement = 'hotmail.com'; 
$output = preg_replace($pattern, $replacement, $input); 
echo $output; 

但我想知道是否可以使用(某种)拼写检查/自动更正功能来纠正所有可能的拼写错误。

+0

如果我要使用我自己的'example @ adamhaskell.net'域,会发生什么?你会尝试自动更正它的东西? –

+0

你确定你想要走这条路吗?有太多的邮件提供商和那么多的域名以及很多可能的方式来拼错它们。 –

+0

你打算将'ymail'更正为'gmail'吗? –

回答

3

你最好告诉用户他们的电子邮件地址显示无效,并允许他们修复这个错误。

我使用此代码确保电子邮件的格式是有效的,并且域名具有有效的MX记录。

function validEmail($string){ 

     // correct format 
     if (filter_var($string, FILTER_VALIDATE_EMAIL)){ 
      // valid domain name 
      list($userName, $mailDomain) = explode("@", $string); 
      if (checkdnsrr($mailDomain, "MX")) { 
       return true; 
      } else { 
       return false; 
      } 
     }else{ 
      return false; 
     } 

    } 
+0

我会强烈推荐'filter_var'作为某种家庭酿造正则表达式的东西。除此之外,检查MX记录是一个好主意。 – Mike

+0

该代码已更新,以反映@Mike提出的建议 – cmorrissey

1

你将会处理启发式问题。你会更好地寻找一个已经为你处理它的图书馆。您几乎必须检查整个数据库以查看该单词是否存在,检查拼写是否正确,查看是否有其他单词与该语法匹配,并让用户知道哪个单词是正确的。像在MS WORD拼写检查

1
$wrong_email = "[email protected]"; 
ereg_replace(Array[], "@hotmail", $wrong_email); 

的ereg_replace功能将是非常有益的,如果你可以把所有的过错频繁数组中,所以功能可以查找使用数组的过错。

相关问题