2013-07-24 106 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功能將是非常有益的,如果你可以把所有的過錯頻繁數組中,所以功能可以查找使用數組的過錯。

相關問題