0

我目前正在编写一个 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

4 回答 4

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;
        }

    }
于 2013-07-24T19:00:00.210 回答
1
$wrong_email = "example@htomail.com";
ereg_replace(Array[], "@hotmail", $wrong_email);

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

于 2013-07-24T19:38:45.247 回答
1

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

于 2013-07-24T18:57:46.343 回答
0

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

于 2013-07-24T18:58:20.023 回答