我目前正在开发一个PHP脚本来检查和更正错误输入的电子邮件地址。 如果输入为:htomail.com,则脚本会将其更改为hotmail.com
我正在使用以下代码(针对所有可能的拼写错误):
$input = 'bill.gates@htomail.com';
$pattern = '/htomail.com/';
$replacement = 'hotmail.com';
$output = preg_replace($pattern, $replacement, $input);
echo $output;
等
但我想知道是否可以使用(某种)拼写检查/自动更正功能来纠正所有可能的拼写错误。
答案 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服务。