前回の記事では「PHPフォームを学習する際にフォームの必須フィールドを確認するにはどうすればよいですか?」をお届けしました。 」では、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 = 'date20150121'; if (preg_match('/^date/', $str)) { echo '匹配成功'; } else { echo '匹配失败'; } ?>上の例では、日付で始まる数値を照合しています。出力結果: 次に
preg_matchede を見てみましょう。3 番目のパラメータは一致するコンテンツです。通常は空の配列を渡します。はアドレスによる呼び出しであり、マッチングが完了すると、特定のマッチング内容が配列で取得されます。
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $str = 'date20150121'; if (preg_match('/^date/', $str,$mat)) { print_r($mat); } else { echo '匹配失败'; } ?>出力結果:
を表すには、文字には
\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('/an|hu/', $name, $arr)) { print_r($arr); } else { echo '匹配失败'; } ?>出力結果:
[] を使用します。
'/[a0\.]/' は、a または 0 と一致します。または
. の任意の文字列。
[a-z] は 26 個の小文字のいずれかを表し、
[A-Z] は次のことを表します大文字の
[0-9] は 10 進数を表します。
PHP 検証名、電子メール、および 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>
通过上述代码,当我们没有按照我们设置的规则填写的话,输出结果如下:
当然作为扩展知识,也可以使用弹窗,只需要在上述示例中的代码做些改动,将输出的字符变成弹窗的格式,示例如下:
<!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视频教程》进行更多关于PHP知识的学习。
以上がPHPフォーム学習でフォーム内のメールアドレスとURLを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。