站長資訊網
        最全最豐富的資訊網站

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        在之前的文章中給大家帶來了《PHP表單學習之怎樣驗證表單中的必需字段?》,其中詳細的介紹了PHP中怎樣驗證表單中的必需字段的相關知識,本篇文章我們繼續來看一下,怎樣驗證表單中的郵件和URL。希望對大家有幫助!

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        在上一篇文章中我們已經了解到了怎樣去驗證必填的信息也就是必須字段,我們需要知道在我們填寫信息時,雖然有些數據不是必填的,但是這些信息是有格式要求的,比如手機號碼或者網址等等,這樣的信息不能夠隨便填寫。這時候我們要怎樣才能完成對這種信息的驗證呢?

        這時候我們就要通過正則表達式來進行對表單中的右鍵和URL信息進行驗證了。如果對正則表達式不太清楚的話可以點擊《正則表達式視頻教程》進行學習。下面就簡單的給大家介紹一下我們在驗證表單數據時會用到的正則表達式的一些知識。

        正則表達式

        正則表達式是一種描述一段文本規則的方法,它不是精確的匹配,而是通過一些特定的符號來模糊匹配。在PHP中,我們使用preg_match函數來執行正則表達式的匹配,一個參數是我們的正則表達式規則,第二個參數是需要檢查的文本。

        preg_match函數的語法格式如下:

        preg_match ( string $正則 , string $字符串 [, array &$結果] )

        其中我們需要注意到的是:根據$正則變量,匹配$字符串變量。如果存在則返回匹配的個數,把匹配到的結果放到$結果變量里。如果沒有匹配到結果返回0。^表示開始;$表示結束。

        接下來我們通過示例來看一下正則表達式的應用:

        <?php  header("Content-type:text/html;charset=utf-8");    //設置編碼  $str = 'date20150121';  if (preg_match('/^date/', $str)) {      echo '匹配成功';  } else {      echo '匹配失敗';  }  ?>

        以上示例中就是在匹配以date 開始的編號。輸出結果:

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        接下來我們看一下preg_matchede第三個參數是匹配的內容,通常我們會將一個空的數組傳遞進去,因為是傳址調用,匹配結束后,數組中會得到具體匹配的內容。

        我們還是通過一個示例來看一下,示例如下:

        <?php  header("Content-type:text/html;charset=utf-8");    //設置編碼  $str = 'date20150121';  if (preg_match('/^date/', $str,$mat)) {      print_r($mat);  } else {      echo '匹配失敗';  }  ?>

        輸出結果:

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        在正則表達式中字母使用w、而數字使用dD表示非數字)來表示

        + 表示一個或者多個,* 表示0個或者多個,? 表示有或者沒有,{n} 表示具體幾位,{m, n} 表示大于m個,小于n個。

        示例如下:

        <?php  header("Content-type:text/html;charset=utf-8");    //設置編碼  $name = "zhang"; // wang zhu hu ma tan    if (preg_match('/an|hu/', $name, $arr)) {      print_r($arr);  } else {      echo '匹配失敗';  }  ?>

        輸出結果:

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        使用或條件可以用來匹配字符串,如果僅僅是單個的字母或者字符,則可以使用范圍表示,使用[]可以表示一個字符的取值范圍'/[a0.]/' 可以匹配包含了a或者0或者.的任意字符串。

        另外,正則表達式還可以使用-來表示一組范圍,[a-z] 表示小寫的26個字母中的任意一個,[A-Z] 表示一個大寫字母,[0-9] 表示一位十進制數。

        正則表達式了解這么多,接下來我們就要來驗證表單的格式是否正確了。

        PHP驗證名稱、郵件和URL

        名字的驗證規則是必須的,并且只能包含字母和空格。E-mail的驗證規則是必須的,其中必須是一個有效的電子郵件地址(包含'@'和'.')。網址的驗證規則的是可選的,并且如果存在,它必須包含一個有效的URL。備注的驗證規則是可選的,多行輸入字段。性別的驗證規則是必須的,必須選擇一個。

        那接下來我們可以通過上述中的政策表達式來寫出以下代碼,將通過簡單的方式來檢測 name 字段是否包含字母和空格,如果 name 字段值不合法,將輸出錯誤信息,示例如下:

        $name = test_input($_POST["name"]); if (!preg_match("/^[a-zA-Z]*$/",$name)) {     $nameErr = "只允許字母和空格"; }

        通過上述代碼便能夠提示用戶姓名填寫的格式,接下來我們可以根據同樣的方法來驗證郵件和URL。

        郵箱名可以是字母、數字、下劃線和點組成的任意字符;郵箱要包含@符號,后面的文字按域名規則處理,以下代碼將通過簡單的方式來檢測 e-mail 地址是否合法。如果 e-mail 地址不合法,將輸出錯誤信息,示例如下:

        $email = test_input($_POST["email"]); if (!preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/",$email)) {     $emailErr = "無效的 email 格式!"; }

        以下代碼將檢測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"; }

        將上述的驗證方法添加到整體的格式中,示例如下:

        <!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8">      <title>PHP中文網</title>  </head>    <style>      .error {color: #FF0000;}  </style>  <body>  <?php  // 定義變量并設置為空值  $nameErr = $emailErr = $genderErr = $websiteErr = "";  $name = $email = $gender = $comment = $website = "";    if ($_SERVER["REQUEST_METHOD"] == "POST") {      if (empty($_POST["name"])) {          $nameErr = "姓名是必填的";      } else {          $name = test_input($_POST["name"]);          // 檢查姓名是否包含字母和空白字符          if (!preg_match("/^[a-zA-Z ]*$/",$name)) {              $nameErr = "只允許字母和空格";          }      }        if (empty($_POST["email"])) {          $emailErr = "電郵是必填的";      } else {          $email = test_input($_POST["email"]);          // 檢查電子郵件地址語法是否有效          if (!preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/",$email)) {              $emailErr = "無效的 email 格式";          }      }        if (empty($_POST["website"])) {          $website = "";      } else {          $website = test_input($_POST["website"]);          // 檢查 URL 地址語法是否有效(正則表達式也允許 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"]);      }  }    function test_input($data) {      $data = trim($data);      $data = stripslashes($data);      $data = htmlspecialchars($data);      return $data;  }  ?>    <h2>PHP 驗證實例</h2>  <p><span class="error">* 必需的字段</span></p>  <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">      姓名:<input type="text" name="name">      <span class="error">* <?php echo $nameErr;?></span>      <br><br>      郵箱:<input type="text" name="email">      <span class="error">* <?php echo $emailErr;?></span>      <br><br>      網址:<input type="text" name="website">      <span class="error"><?php echo $websiteErr;?></span>      <br><br>      評論:<textarea name="comment" rows="5" cols="40"></textarea>      <br><br>      性別:      <input type="radio" name="gender" value="female">女性      <input type="radio" name="gender" value="male">男性      <span class="error">* <?php echo $genderErr;?></span>      <br><br>      <input type="submit" name="submit" value="提交">  </form>    <?php  echo "<h2>您的輸入:</h2>";  echo $name;  echo "<br>";  echo $email;  echo "<br>";  echo $website;  echo "<br>";  echo $comment;  echo "<br>";  echo $gender;  ?>    </body>  </html>

        通過上述代碼,當我們沒有按照我們設置的規則填寫的話,輸出結果如下:

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        當然作為擴展知識,也可以使用彈窗,只需要在上述示例中的代碼做些改動,將輸出的字符變成彈窗的格式,示例如下:

        <!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8">      <title>PHP中文網</title>  </head>    <style>      .error {color: #FF0000;}  </style>  <body>  <?php  // 定義變量并設置為空值  $nameErr = $emailErr = $genderErr = $websiteErr = "";  $name = $email = $gender = $comment = $website = "";  if ($_SERVER["REQUEST_METHOD"] == "POST") {      if (empty($_POST["name"])) {          $nameErr = "<script language="javascript">         {         alert("姓名是必填的"); //彈出對話框         }         </script>";      } else {          $name = test_input($_POST["name"]);          if (!preg_match("/^[a-zA-Z ]*$/",$name)) {              $nameErr = "<script language="javascript">             {             alert("姓名只允許字母和空格"); //彈出對話框             }             </script>";          }      }      if (empty($_POST["email"])) {          $emailErr = "<script language="javascript">         {         alert("電郵是必填的"); //彈出對話框         }         </script>";      } else {          $email = test_input($_POST["email"]);          // 檢查電子郵件地址語法是否有效          if (!preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/",$email)) {              $emailErr = "<script language="javascript">             {             alert("無效email的格式"); //彈出對話框             }             </script>";          }      }      if (empty($_POST["website"])) {          $website = "";      } else {          $website = test_input($_POST["website"]);          // 檢查 URL 地址語法是否有效(正則表達式也允許 URL 中的斜杠)          if (!preg_match("/b(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i",$website)) {              $websiteErr = "<script language="javascript">             {             alert("無效的URL"); //彈出對話框             }             </script>";          }      }      if (empty($_POST["comment"])) {          $comment = "";      } else {          $comment = test_input($_POST["comment"]);      }      if (empty($_POST["gender"])) {          $genderErr = "<script language="javascript">         {         alert("性別是必選的"); //彈出對話框         }         </script>";      } else {          $gender = test_input($_POST["gender"]);      }  }  function test_input($data) {      $data = trim($data);      $data = stripslashes($data);      $data = htmlspecialchars($data);      return $data;  }  ?>  <h2>PHP 驗證實例</h2>  <p><span class="error">* 必需的字段</span></p>  <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">      姓名:<input type="text" name="name">      <span class="error">* <?php echo $nameErr;?></span>      <br><br>      郵箱:<input type="text" name="email">      <span class="error">* <?php echo $emailErr;?></span>      <br><br>      網址:<input type="text" name="website">      <span class="error"><?php echo $websiteErr;?></span>      <br><br>      評論:<textarea name="comment" rows="5" cols="40"></textarea>      <br><br>      性別:      <input type="radio" name="gender" value="female">女性      <input type="radio" name="gender" value="male">男性      <span class="error">* <?php echo $genderErr;?></span>      <br><br>      <input type="submit" name="submit" value="提交">  </form>    <?php  echo "<h2>您的輸入:</h2>";  echo $name;  echo "<br>";  echo $email;  echo "<br>";  echo $website;  echo "<br>";  echo $comment;  echo "<br>";  echo $gender;  ?>    </body>  </html>

        當填寫內容不按規定規則是,點擊提交,輸出結果如下:

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        PHP表單學習之怎樣驗證表單中的郵件和URL?

        如此我們便完成了PHP驗證名稱、郵件和URL。

        大家如果感興趣的話,可以點擊《PHP視頻教程》進行

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品国产美女福利到在线不卡| 日本精品夜色视频一区二区| 国产精品videossex白浆| 久久久久久国产精品免费无码 | 国产精品久久久久乳精品爆 | 亚洲国产精品久久久天堂| 精品人妻V?出轨中文字幕| 久久久久夜夜夜精品国产| 国产福利精品一区二区| 无码国产69精品久久久久网站| 久久久99精品成人片中文字幕| 国产成人精品日本亚洲专区| 亚洲国产成人久久精品动漫| 久久99久久99小草精品免视看| 国产精品视频色拍拍| 久久综合精品国产二区无码 | 最新国产乱人伦偷精品免费网站| 精品久久久久久无码中文字幕| 国产成人99久久亚洲综合精品| 欧美日韩精品乱国产538| 国产精品一久久香蕉产线看| 国产2021精品视频免费播放| 国产办公室秘书无码精品99| 国产午夜精品免费一区二区三区| 久热这里只有精品视频6| 日韩精品中文字幕无码一区| 亚洲国产美女精品久久久久∴| 在线精品自拍无码| 亚洲精品无码午夜福利中文字幕 | 欧美亚洲国产精品第一页| 国产成人精品免费午夜app| 国产精品无码一区二区三级 | 99久久免费国产精品热| 国产精品拍天天在线| 97久久精品无码一区二区| 55夜色66夜色国产精品视频| www.99精品| 91精品婷婷国产综合久久| 国产精品偷窥熟女精品视频| 久久国产乱子伦精品免费午夜| 女人高潮内射99精品|