top
Loading...
PHP 表單 – 驗證郵件和URL

PHP 表單 - 驗證郵件和URL


本章節我們將介紹如何驗證 names(名稱), e-mails(郵件), 和 URLs。


PHP - 驗證名稱

以下代碼將通過簡單的方式來檢測 name 字段是否包含字母和空格,如果 name 字段值不合法,將輸出錯誤信息:

$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  $nameErr = "只允許字母和空格"; 
}
preg_match — 進行正則表達式匹配。

語法:

int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] )


在 subject 字符串中搜索與 pattern 給出的正則表達式相匹配的內容。如果提供了 matches ,則其會被搜索的結果所填充。$matches[0] 將包含與整個模式匹配的文本,$matches[1] 將包含與第一個捕獲的括號中的子模式所匹配的文本,以此類推。


PHP - 驗證郵件

以下代碼將通過簡單的方式來檢測 e-mail 地址是否合法。如果 e-mail 地址不合法,將輸出錯誤信息:

$email = test_input($_POST["email"]);
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
  $emailErr = "非法郵箱格式"; 
}

PHP - 驗證 URL

以下代碼將檢測URL地址是否合法 (以下正則表達式運行URL中含有破折號:"-"), 如果 URL 地址不合法,將輸出錯誤信息:

$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
  $websiteErr = "非法的 URL 的地址"; 
}

PHP - 驗證 Name, E-mail, 和 URL

代碼如下所示:

<?php
// 定義變量併默認設置為空值
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["name"])) {
      $nameErr = "Name is required";
      } else {
         $name = test_input($_POST["name"]);
         // 檢測名字是否只包含字母跟空格
         if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
         $nameErr = "只允許字母和空格"; 
         }
     }
   
   if (empty($_POST["email"])) {
      $emailErr = "Email is required";
   } else {
      $email = test_input($_POST["email"]);
      // 檢測郵箱是否合法
      if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
         $emailErr = "非法郵箱格式"; 
      }
   }
     
   if (empty($_POST["website"])) {
      $website = "";
   } else {
      $website = test_input($_POST["website"]);
      // 檢測 URL 地址是否合法
     if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
         $websiteErr = "非法的 URL 的地址"; 
      }
   }
   if (empty($_POST["comment"])) {
      $comment = "";
   } else {
      $comment = test_input($_POST["comment"]);
   }
   if (empty($_POST["gender"])) {
      $genderErr = "性別是必需的";
   } else {
      $gender = test_input($_POST["gender"]);
   }
}
?>

運行實例 »

北斗有巢氏 有巢氏北斗