欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

          在之前的文章中給大家?guī)?lái)了《PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的必需字段?》,其中詳細(xì)的介紹了PHP中怎樣驗(yàn)證表單中的必需字段的相關(guān)知識(shí),本篇文章我們繼續(xù)來(lái)看一下,怎樣驗(yàn)證表單中的郵件和URL。希望對(duì)大家有幫助!

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

          在上一篇文章中我們已經(jīng)了解到了怎樣去驗(yàn)證必填的信息也就是必須字段,我們需要知道在我們填寫(xiě)信息時(shí),雖然有些數(shù)據(jù)不是必填的,但是這些信息是有格式要求的,比如手機(jī)號(hào)碼或者網(wǎng)址等等,這樣的信息不能夠隨便填寫(xiě)。這時(shí)候我們要怎樣才能完成對(duì)這種信息的驗(yàn)證呢?

          這時(shí)候我們就要通過(guò)正則表達(dá)式來(lái)進(jìn)行對(duì)表單中的右鍵和URL信息進(jìn)行驗(yàn)證了。如果對(duì)正則表達(dá)式不太清楚的話(huà)可以點(diǎn)擊《正則表達(dá)式視頻教程》進(jìn)行學(xué)習(xí)。下面就簡(jiǎn)單的給大家介紹一下我們?cè)隍?yàn)證表單數(shù)據(jù)時(shí)會(huì)用到的正則表達(dá)式的一些知識(shí)。

          正則表達(dá)式

          正則表達(dá)式是一種描述一段文本規(guī)則的方法,它不是精確的匹配,而是通過(guò)一些特定的符號(hào)來(lái)模糊匹配。在PHP中,我們使用preg_match函數(shù)來(lái)執(zhí)行正則表達(dá)式的匹配,一個(gè)參數(shù)是我們的正則表達(dá)式規(guī)則,第二個(gè)參數(shù)是需要檢查的文本。

          preg_match函數(shù)的語(yǔ)法格式如下:

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

          其中我們需要注意到的是:根據(jù)$正則變量,匹配$字符串變量。如果存在則返回匹配的個(gè)數(shù),把匹配到的結(jié)果放到$結(jié)果變量里。如果沒(méi)有匹配到結(jié)果返回0。^表示開(kāi)始;$表示結(jié)束。

          接下來(lái)我們通過(guò)示例來(lái)看一下正則表達(dá)式的應(yīng)用:

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

          以上示例中就是在匹配以date 開(kāi)始的編號(hào)。輸出結(jié)果:

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

          接下來(lái)我們看一下preg_matchede第三個(gè)參數(shù)是匹配的內(nèi)容,通常我們會(huì)將一個(gè)空的數(shù)組傳遞進(jìn)去,因?yàn)槭莻髦氛{(diào)用,匹配結(jié)束后,數(shù)組中會(huì)得到具體匹配的內(nèi)容。

          我們還是通過(guò)一個(gè)示例來(lái)看一下,示例如下:

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

          輸出結(jié)果:

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

          在正則表達(dá)式中字母使用w、而數(shù)字使用dD表示非數(shù)字)來(lái)表示

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

          示例如下:

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

          輸出結(jié)果:

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

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

          另外,正則表達(dá)式還可以使用-來(lái)表示一組范圍,[a-z] 表示小寫(xiě)的26個(gè)字母中的任意一個(gè),[A-Z] 表示一個(gè)大寫(xiě)字母,[0-9] 表示一位十進(jìn)制數(shù)。

          正則表達(dá)式了解這么多,接下來(lái)我們就要來(lái)驗(yàn)證表單的格式是否正確了。

          PHP驗(yàn)證名稱(chēng)、郵件和URL

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

          那接下來(lái)我們可以通過(guò)上述中的政策表達(dá)式來(lái)寫(xiě)出以下代碼,將通過(guò)簡(jiǎn)單的方式來(lái)檢測(cè) name 字段是否包含字母和空格,如果 name 字段值不合法,將輸出錯(cuò)誤信息,示例如下:

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

          通過(guò)上述代碼便能夠提示用戶(hù)姓名填寫(xiě)的格式,接下來(lái)我們可以根據(jù)同樣的方法來(lái)驗(yàn)證郵件和URL。

          郵箱名可以是字母、數(shù)字、下劃線(xiàn)和點(diǎn)組成的任意字符;郵箱要包含@符號(hào),后面的文字按域名規(guī)則處理,以下代碼將通過(guò)簡(jiǎn)單的方式來(lái)檢測(cè) e-mail 地址是否合法。如果 e-mail 地址不合法,將輸出錯(cuò)誤信息,示例如下:

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

          以下代碼將檢測(cè)URL地址是否合法 (以下正則表達(dá)式運(yùn)行URL中含有破折號(hào):"-"), 如果 URL 地址不合法,將輸出錯(cuò)誤信息,示例如下:

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

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

          <!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8">      <title>PHP中文網(wǎng)</title>  </head>    <style>      .error {color: #FF0000;}  </style>  <body>  <?php  // 定義變量并設(shè)置為空值  $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"]);          // 檢查電子郵件地址語(yǔ)法是否有效          if (!preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/",$email)) {              $emailErr = "無(wú)效的 email 格式";          }      }        if (empty($_POST["website"])) {          $website = "";      } else {          $website = test_input($_POST["website"]);          // 檢查 URL 地址語(yǔ)法是否有效(正則表達(dá)式也允許 URL 中的斜杠)          if (!preg_match("/b(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i",$website)) {              $websiteErr = "無(wú)效的 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 驗(yàn)證實(shí)例</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>      網(wǎng)址:<input type="text" name="website">      <span class="error"><?php echo $websiteErr;?></span>      <br><br>      評(píng)論:<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>

          通過(guò)上述代碼,當(dāng)我們沒(méi)有按照我們?cè)O(shè)置的規(guī)則填寫(xiě)的話(huà),輸出結(jié)果如下:

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

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

          <!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8">      <title>PHP中文網(wǎng)</title>  </head>    <style>      .error {color: #FF0000;}  </style>  <body>  <?php  // 定義變量并設(shè)置為空值  $nameErr = $emailErr = $genderErr = $websiteErr = "";  $name = $email = $gender = $comment = $website = "";  if ($_SERVER["REQUEST_METHOD"] == "POST") {      if (empty($_POST["name"])) {          $nameErr = "<script language="javascript">         {         alert("姓名是必填的"); //彈出對(duì)話(huà)框         }         </script>";      } else {          $name = test_input($_POST["name"]);          if (!preg_match("/^[a-zA-Z ]*$/",$name)) {              $nameErr = "<script language="javascript">             {             alert("姓名只允許字母和空格"); //彈出對(duì)話(huà)框             }             </script>";          }      }      if (empty($_POST["email"])) {          $emailErr = "<script language="javascript">         {         alert("電郵是必填的"); //彈出對(duì)話(huà)框         }         </script>";      } else {          $email = test_input($_POST["email"]);          // 檢查電子郵件地址語(yǔ)法是否有效          if (!preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/",$email)) {              $emailErr = "<script language="javascript">             {             alert("無(wú)效email的格式"); //彈出對(duì)話(huà)框             }             </script>";          }      }      if (empty($_POST["website"])) {          $website = "";      } else {          $website = test_input($_POST["website"]);          // 檢查 URL 地址語(yǔ)法是否有效(正則表達(dá)式也允許 URL 中的斜杠)          if (!preg_match("/b(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i",$website)) {              $websiteErr = "<script language="javascript">             {             alert("無(wú)效的URL"); //彈出對(duì)話(huà)框             }             </script>";          }      }      if (empty($_POST["comment"])) {          $comment = "";      } else {          $comment = test_input($_POST["comment"]);      }      if (empty($_POST["gender"])) {          $genderErr = "<script language="javascript">         {         alert("性別是必選的"); //彈出對(duì)話(huà)框         }         </script>";      } else {          $gender = test_input($_POST["gender"]);      }  }  function test_input($data) {      $data = trim($data);      $data = stripslashes($data);      $data = htmlspecialchars($data);      return $data;  }  ?>  <h2>PHP 驗(yàn)證實(shí)例</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>      網(wǎng)址:<input type="text" name="website">      <span class="error"><?php echo $websiteErr;?></span>      <br><br>      評(píng)論:<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>

          當(dāng)填寫(xiě)內(nèi)容不按規(guī)定規(guī)則是,點(diǎn)擊提交,輸出結(jié)果如下:

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

          PHP表單學(xué)習(xí)之怎樣驗(yàn)證表單中的郵件和URL?

          如此我們便完成了PHP驗(yàn)證名稱(chēng)、郵件和URL。

          大家如果感興趣的話(huà),可以點(diǎn)擊《PHP視頻教程》進(jìn)行

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)