[英]Validating email input in form using PHP
我正在PHP中創建一個表單,其中包含一個名為email的字段,用戶需要在其中輸入他/她的電子郵件ID。 為了確保輸入的郵件ID在語法上是真實的(例如username_123@domain.com
是有效的),我需要對其進行某種形式的驗證。 我發現情況非常模糊,因為我不知道如何檢查輸入的郵件ID是否包含@
符號等。請幫助。 謝謝。 :)
最好的解決方案是:
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
...
}
讓PHP為您處理繁重的工作。 否則,如果您想嚴格正確並自己直接使用正則表達式,就會陷入這種怪誕之中:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
嚴格遵守RFC2822。
首先,您需要定義有效的電子郵件 。
取決於此驗證對您的重要性,有不同的方法。
有些人使用瘋狂的RFC正則表達式。
另一個極端是保存用戶輸入的所有內容,然后嘗試將確認電子郵件發送到該地址。 沒有確認=錯誤的電子郵件。
您可能需要介於兩者之間:確保中間有一個@
,例如:
$email_arr = explode('@', $email);
if (sizeof($email_arr) !== 2 || $email_arr[0] == '' || $email_arr[1] == '')
... // definitely not valid
UPD: Marc B用filter_var($email, FILTER_VALIDATE_EMAIL)
釘上了它,這可能是最好的方法。
您可以使用正則表達式來驗證格式:
<?php
$email = "someone@example.com"; // or perhaps $_POST['email'];
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
echo "Valid email address.";
}
else {
echo "Invalid email address.";
}
?>
您可以使用jquery插件驗證表單。
從我自己的代碼:
if( !preg_match( "(^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$)i", $email))
echo "E-mail address invalid";
極少數合法地址可能會失敗,例如任何@example.info
,以及任何使用不尋常字符的電子郵件地址,但在大多數情況下,此方法都可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.