在 PHP 中驗證電子郵件
-
在 PHP 中使用
filter_var()
函式和FILTER_VALIDATE_EMAIL
驗證電子郵件 -
在 PHP 中使用
FILTER_VALIDATE_EMAIL
、FILTER_SANITIZE_EMAIL
和filter_var()
函式驗證電子郵件 -
使用
preg_match()
函式根據正規表示式驗證電子郵件
我們將介紹一種使用 filter_var()
函式和 FILTER_VALIDATE_EMAIL
過濾器名稱 ID 在 PHP 中驗證電子郵件地址的方法。filter_var()
函式將電子郵件作為第一個引數和過濾器名稱 FILTER_VALIDATE_EMAIL
以根據 RFC 822 中的語法驗證電子郵件。此方法檢查有效的電子郵件格式而不是有效的電子郵件。
我們還將演示另一種使用 FILTER_SANITIZE_EMAIL
和 FILTER_VALIDATE_EMAIL
過濾器名稱 ID 以及 fiter_var()
函式在 PHP 中驗證電子郵件地址的方法。此方法首先清理電子郵件地址,然後驗證電子郵件地址。
我們將介紹另一種使用正規表示式在 PHP 中驗證電子郵件的方法。此方法使用 preg_match()
函式根據提供的正規表示式檢查電子郵件是否有效。
在 PHP 中使用 filter_var()
函式和 FILTER_VALIDATE_EMAIL
驗證電子郵件
我們可以使用 filter_var()
函式來過濾具有特定過濾器名稱的變數。FILTER_VALIDATE_EMAIL
過濾器名稱指定電子郵件需要驗證。該函式將電子郵件地址作為字串作為第一個引數,將上面指定的過濾器 ID 作為第二個引數。因此,我們可以檢查提供的電子郵件是否有效。如果函式成功或返回 false,則函式返回過濾後的資料。電子郵件被稱為有效,而不是電子郵件存在的意義。過濾器 id 根據 RFC 822 中的語法驗證電子郵件。我們可以使用有效和無效的電子郵件來測試電子郵件的驗證。
例如,建立一個函式 validateEmail()
,它接受一個引數 $email
。對 $email
變數使用 filter_var()
函式,並指定過濾器 ID FILTER_VALIDATE_EMAIL
作為第二個引數。對 filter_var()
函式應用 if-else
條件。在 if
塊中,顯示訊息說電子郵件有效,在 else
條件下,顯示該電子郵件無效。在函式外,呼叫該函式兩次。在第一個函式呼叫中提供引數,peter.piper@iana.org
和 first.last@example.123
在第二次通話中。
我們可以假設示例中提供的電子郵件地址是使用 $_POST
變數從表單訪問的。下面示例中的函式被呼叫兩次。第一個呼叫傳遞一個有效的電子郵件地址,第二個地址傳遞一個無效的電子郵件。第二個電子郵件地址無效,因為它包含頂級域中的數字。結果是顯而易見的。
示例程式碼:
#php 7.x
<?php
function validateEmail($email) {
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "{$email}: A valid email"."<br>";
}
else {
echo "{$email}: Not a valid email"."<br>";
}
}
validateEmail('peter.piper@iana.org');
validateEmail('first.last@example.123');
?>
輸出:
phppeter.piper@iana.org: A valid email
first.last@example.123:Not a valid email
在 PHP 中使用 FILTER_VALIDATE_EMAIL
、FILTER_SANITIZE_EMAIL
和 filter_var()
函式驗證電子郵件
我們可以在第一種方法中使用附加的 FILTER_SANITIZE_EMAIL
過濾器名稱 id 從電子郵件地址中刪除所有非法字元。過濾器名稱 id 是 filter_var()
函式中的第二個引數,其中電子郵件地址是第一個引數。該函式返回經過消毒的電子郵件。我們可以再次使用該功能來檢查消毒後電子郵件地址的有效性。為此,我們可以使用 FILTER_VALIDATE_EMAIL
過濾器名稱 id 來遵循第一種方法。
例如,建立一個變數 $email
並儲存一個包含非法字元的電子郵件地址。將電子郵件 ram(.mugu)@exa//mple.org
作為字串儲存在變數中。對變數使用 filter_var()
函式,並使用 FILTER_SANITIZE_EMAIL
id 作為第二個引數。將函式儲存在同一個 $email
變數中。然後,像第一種方法一樣應用 if-else
語句。這一次,使用 FILTER_VALIDATE_EMAIL
電子郵件作為函式中的過濾器名稱。同樣,顯示訊息。
在下面的示例中採用了帶有非法字元的電子郵件地址,filter_var()
函式過濾這些字元並清理所提供的電子郵件。示例中提供的電子郵件地址包含非法字元,例如 ()
和 //
。該函式首先從電子郵件中刪除這些字元,然後驗證電子郵件。
示例程式碼:
#php 7.x
<?php
$email = "ram(.mugu)@exa//mple.org";
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "{$email}: A valid email"."<br>";
}
else{
echo "{$email}:Not a valid email"."<br>";
}
?>
輸出:
ram.mugu@example.org: A valid email
使用 preg_match()
函式根據正規表示式驗證電子郵件
我們可以使用 preg_match()
函式來驗證 PHP 中的電子郵件地址。此方法使用正規表示式作為電子郵件的驗證規則。我們可以自己建立正規表示式並定義有效電子郵件的規則。preg_match()
函式接受兩個引數,其中第一個是正規表示式,第二個是要檢查的電子郵件。我們可以使用三元運算子和函式一起檢查電子郵件的有效性。
例如,建立兩個變數 $email_first
和 $email_secon
,並在這些變數中儲存兩個電子郵件地址。首先儲存有效的電子郵件 firstlast11@gmail.com
,然後儲存無效的電子郵件 firstlast@11gmail,com
。編寫一個帶有一個引數的函式 validateEmail()
。命名引數 $email
。在函式內部,在 $regex
變數中編寫一個正規表示式,如示例程式碼所示。然後編寫一個三元運算子,其中要檢查的條件是 preg_match()
函式。將 $regex
作為第一個引數,將 $email
作為第二個引數。當條件為真時列印電子郵件有效的訊息,當條件為假時列印電子郵件無效的訊息。回顯整個三元表示式。在函式外,呼叫 validateEmail()
函式兩次。在第一個函式呼叫中使用 $email_first
變數,在第二個函式呼叫中使用 $email_second
變數。
在下面的示例中,我們編寫了一個正規表示式,用於建立驗證電子郵件的規則。有效的電子郵件包含收件人姓名、@
符號、域和頂級域。上面建立的正規表示式接受收件人姓名作為字母數字值。字母表由大寫字母和小寫字母組成。它也接受一個句點。電子郵件必須有 @
符號。該域僅包含字母。然後電子郵件應該有一個句點。頂級域應該只由字母組成,並且長度應該是兩個或三個。正規表示式是基於此規則建立的。第一封電子郵件是有效的,因為它滿足所有規則,但第二封電子郵件無效。無效,因為域名中有數字,頂級域名前沒有句號。
示例程式碼:
# php 7.x
<?php
$email_first = 'firstlast11@gmail.com';
$email_second ='firstlast@11gmail,com';
function validateEmail($email) {
$regex = "/^([a-zA-Z0-9\.]+@+[a-zA-Z]+(\.)+[a-zA-Z]{2,3})$/";
echo preg_match($regex, $email) ? "The email is valid"."<br>" :"The email is not valid";
}
validateEmail($email_first);
validateEmail($email_second);
?>
輸出:
The email is valid
The email is not valid
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn