自动更正电子邮件地址

时间:2013-07-24 18:54:55

标签: php preg-replace

我目前正在开发一个PHP脚本来检查和更正错误输入的电子邮件地址。 如果输入为:htomail.com,则脚本会将其更改为hotmail.com

我正在使用以下代码(针对所有可能的拼写错误):

$input = 'bill.gates@htomail.com';
$pattern = '/htomail.com/';
$replacement = 'hotmail.com';
$output = preg_replace($pattern, $replacement, $input);
echo $output;

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

4 个答案:

答案 0 :(得分: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;
        }

    }

答案 1 :(得分:1)

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

答案 2 :(得分:1)

$wrong_email = "example@htomail.com";
ereg_replace(Array[], "@hotmail", $wrong_email);

如果您可以将所有频繁的错误放在数组中,那么ereg_replace函数将非常有用,因此该函数可以使用数组查找错误。

答案 3 :(得分:0)

Php拥有pspel捆绑扩展名:http://php.net/manual/en/ref.pspell.php 但我认为你应该检查域名使用whois服务。