ホームページ  >  記事  >  バックエンド開発  >  PHPフォーム学習でフォーム内のメールアドレスとURLを確認するにはどうすればよいですか?

PHPフォーム学習でフォーム内のメールアドレスとURLを確認するにはどうすればよいですか?

WBOY
WBOYオリジナル
2021-10-29 14:56:312089ブラウズ

前回の記事では「PHPフォームを学習する際にフォームの必須フィールドを確認するにはどうすればよいですか?」をお届けしました。 」では、PHP でフォームの必須フィールドを検証する方法について詳しく紹介しています。今回は引き続き、フォームのメールアドレスと URL を検証する方法について見ていきます。みんなが助けてくれるといいですね!

PHPフォーム学習でフォーム内のメールアドレスとURLを確認するにはどうすればよいですか?

前の記事では、必須情報、つまり必須フィールドを確認する方法を学びました。情報を入力するときに、それを知っておく必要があります。データは必須ではありませんが、携帯電話番号やウェブサイトのアドレスなどの形式要件があり、これらの情報は気軽に入力することはできません。現時点でこの情報の検証を完了するにはどうすればよいでしょうか?

今回は、正規表現を使用してフォーム内の右クリックと URL 情報を検証します。正規表現についてよくわからない場合は、「正規表現ビデオ チュートリアル」をクリックして学習してください。フォームデータを検証する際に使用する正規表現についての知識を簡単に紹介します。

正規表現

正規表現は、テキストの規則を記述する方法です。完全一致ではありませんが、特定のシンボルのあいまい一致。 PHP では、preg_match 関数を使用して正規表現のマッチングを実行します。1 つのパラメータは正規表現ルールで、2 番目のパラメータはチェックする必要があるテキストです。

preg_match関数の構文形式は次のとおりです:

preg_match ( string $正则 , string $字符串 [, array &$结果] )

注意する必要があるのは、$正規変数によると、 match$ 文字列変数 。存在する場合は、一致の数を返し、一致した結果を $result 変数 に入れます。結果が見つからない場合は 0 が返されます。 #^ は始まりを意味し、#$ は終わりを意味します。

次に、例を通して正規表現の適用を見てみましょう:


<?php
 header("Content-type:text/html;charset=utf-8");    //设置编码
 $str = &#39;date20150121&#39;;
 if (preg_match(&#39;/^date/&#39;, $str)) {
     echo &#39;匹配成功&#39;;
 } else {
     echo &#39;匹配失败&#39;;
 }
 ?>

上の例では、日付で始まる数値を照合しています。出力結果:

PHPフォーム学習でフォーム内のメールアドレスとURLを確認するにはどうすればよいですか?

次に

preg_matchede を見てみましょう。3 番目のパラメータは一致するコンテンツです。通常は空の配列を渡します。はアドレスによる呼び出しであり、マッチングが完了すると、特定のマッチング内容が配列で取得されます。

例を見てみましょう。例は次のとおりです:

<?php
 header("Content-type:text/html;charset=utf-8");    //设置编码
 $str = &#39;date20150121&#39;;
 if (preg_match(&#39;/^date/&#39;, $str,$mat)) {
     print_r($mat);
 } else {
     echo &#39;匹配失败&#39;;
 }
 ?>

出力結果:


PHPフォーム学習でフォーム内のメールアドレスとURLを確認するにはどうすればよいですか?

正規表現

を表すには、文字には \w、数字には \d

(

\D は数字以外を表します) を使用します。 1 つまたは複数を表します、# は 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(&#39;/an|hu/&#39;, $name, $arr)) {
     print_r($arr);
 } else {
     echo &#39;匹配失败&#39;;
 }
 ?>

出力結果:


PHPフォーム学習でフォーム内のメールアドレスとURLを確認するにはどうすればよいですか?

or 条件を使用して文字列を一致させることができます。単一の文字または文字のみを範囲で表すことができます。文字の値の範囲を表すには、

[] を使用します。'/[a0\.]/' は、a または 0 と一致します。または . の任意の文字列。

さらに、正規表現では - を使用して一連の範囲を表すこともできます。

[a-z] は 26 個の小文字のいずれかを表し、 [A-Z] は次のことを表します大文字の [0-9] は 10 進数を表します。

正規表現について十分理解したら、次はフォームの形式が正しいかどうかを確認する必要があります。

PHP 検証名、電子メール、および URL

名前の検証ルールは必須であり、文字とスペースのみを含めることができます。電子メール検証ルールは必須であり、有効な電子メール アドレス (「@」と「.」を含む) である必要があります。 URL 検証ルールはオプションであり、存在する場合は、有効な URL が含まれている必要があります。メモの検証ルールはオプションの複数行の入力フィールドです。性別検証ルールが必要であり、いずれかを選択する必要があります。

次に、上記のポリシー式を使用して次のコードを記述すると、名前フィールドに文字とスペースが含まれているかどうかを簡単に検出できます。名前フィールドの値が不正な場合は、エラー メッセージが出力されます。例は次のとおりです。

$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视频教程》进行更多关于PHP知识的学习。

以上がPHPフォーム学習でフォーム内のメールアドレスとURLを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。