-----------------------------------------------------------------------------

本节展示如何验证名字、电邮和 URL。

-----------------------------------------------------------------------------

PHP - 验证名字

以下代码展示的简单方法检查 name 字段是否包含字母和空格。如果 name 字段无效,则存储一条错误消息:

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

注释:preg_match() 函数检索字符串的模式,如果模式存在则返回 true,否则返回 false。

---------------------------------------------------------------------------------------------------------------

PHP - 验证 E-mail

以下代码展示的简单方法检查 e-mail 地址语法是否有效。如果无效则存储一条错误消息:

  1. $email = test_input($_POST["email"]);
  2. if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
  3. $emailErr = "无效的 email 格式!";
  4. }

---------------------------------------------------------------------------------------------------------------

PHP - 验证 URL

以下代码展示的方法检查 URL 地址语法是否有效(这条正则表达式同时允许 URL 中的斜杠)。如果 URL 地址语法无效,则存储一条错误消息:

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

-------------------------------------------------------------------------------------------------------------

PHP - 验证 Name、E-mail、以及 URL

现在,脚本是这样的:

实例

  1. <?php
  2. // 定义变量并设置为空值
  3. $nameErr = $emailErr = $genderErr = $websiteErr = "";
  4. $name = $email = $gender = $comment = $website = "";
  5.  
  6. if ($_SERVER["REQUEST_METHOD"] == "POST") {
  7. if (empty($_POST["name"])) {
  8. $nameErr = "Name is required";
  9. } else {
  10. $name = test_input($_POST["name"]);
  11. // 检查名字是否包含字母和空格
  12. if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  13. $nameErr = "Only letters and white space allowed";
  14. }
  15. }
  16.  
  17. if (empty($_POST["email"])) {
  18. $emailErr = "Email is required";
  19. } else {
  20. $email = test_input($_POST["email"]);
  21. // 检查电邮地址语法是否有效
  22. if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
  23. $emailErr = "Invalid email format";
  24. }
  25. }
  26.  
  27. if (empty($_POST["website"])) {
  28. $website = "";
  29. } else {
  30. $website = test_input($_POST["website"]);
  31. // 检查 URL 地址语言是否有效(此正则表达式同样允许 URL 中的下划线)
  32. if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%
  33. =~_|]/i",$website)) {
  34. $websiteErr = "Invalid URL";
  35. }
  36. }
  37.  
  38. if (empty($_POST["comment"])) {
  39. $comment = "";
  40. } else {
  41. $comment = test_input($_POST["comment"]);
  42. }
  43.  
  44. if (empty($_POST["gender"])) {
  45. $genderErr = "Gender is required";
  46. } else {
  47. $gender = test_input($_POST["gender"]);
  48. }
  49. }
  50. ?>

源代码:

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <style>
  5. .error {color: #FF0000;}
  6. </style>
  7. </head>
  8. <body>
  9.  
  10. <?php
  11. // 定义变量并设置为空值
  12. $nameErr = $emailErr = $genderErr = $websiteErr = "";
  13. $name = $email = $gender = $comment = $website = "";
  14.  
  15. if ($_SERVER["REQUEST_METHOD"] == "POST") {
  16. if (empty($_POST["name"])) {
  17. $nameErr = "姓名是必填的";
  18. } else {
  19. $name = test_input($_POST["name"]);
  20. // 检查姓名是否包含字母和空白字符
  21. if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  22. $nameErr = "只允许字母和空格";
  23. }
  24. }
  25.  
  26. if (empty($_POST["email"])) {
  27. $emailErr = "电邮是必填的";
  28. } else {
  29. $email = test_input($_POST["email"]);
  30. // 检查电子邮件地址语法是否有效
  31. if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
  32. $emailErr = "无效的 email 格式";
  33. }
  34. }
  35.  
  36. if (empty($_POST["website"])) {
  37. $website = "";
  38. } else {
  39. $website = test_input($_POST["website"]);
  40. // 检查 URL 地址语法是否有效(正则表达式也允许 URL 中的斜杠)
  41. if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
  42. $websiteErr = "无效的 URL";
  43. }
  44. }
  45.  
  46. if (empty($_POST["comment"])) {
  47. $comment = "";
  48. } else {
  49. $comment = test_input($_POST["comment"]);
  50. }
  51.  
  52. if (empty($_POST["gender"])) {
  53. $genderErr = "性别是必选的";
  54. } else {
  55. $gender = test_input($_POST["gender"]);
  56. }
  57. }
  58.  
  59. function test_input($data) {
  60. $data = trim($data);
  61. $data = stripslashes($data);
  62. $data = htmlspecialchars($data);
  63. return $data;
  64. }
  65. ?>
  66.  
  67. <h2>PHP 验证实例</h2>
  68. <p><span class="error">* 必需的字段</span></p>
  69. <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  70. 姓名:<input type="text" name="name">
  71. <span class="error">* <?php echo $nameErr;?></span>
  72. <br><br>
  73. 电邮:<input type="text" name="email">
  74. <span class="error">* <?php echo $emailErr;?></span>
  75. <br><br>
  76. 网址:<input type="text" name="website">
  77. <span class="error"><?php echo $websiteErr;?></span>
  78. <br><br>
  79. 评论:<textarea name="comment" rows="" cols=""></textarea>
  80. <br><br>
  81. 性别:
  82. <input type="radio" name="gender" value="female">女性
  83. <input type="radio" name="gender" value="male">男性
  84. <span class="error">* <?php echo $genderErr;?></span>
  85. <br><br>
  86. <input type="submit" name="submit" value="提交">
  87. </form>
  88.  
  89. <?php
  90. echo "<h2>您的输入:</h2>";
  91. echo $name;
  92. echo "<br>";
  93. echo $email;
  94. echo "<br>";
  95. echo $website;
  96. echo "<br>";
  97. echo $comment;
  98. echo "<br>";
  99. echo $gender;
  100. ?>
  101.  
  102. </body>
  103. </html>

运行结果:

接下来向您讲解如何防止表单在用户提交表单后清空所有输入字段。

PHP 表单验证 - 验证 E-mail 和 URL的更多相关文章

  1. thinkphp表单自动验证

    ThinkPHP框架表单验证 对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验 ...

  2. bootstrap表单带验证

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  3. easyui表单多重验证,动态设置easyui控件

    要实现的功能:在做添加学生信息的时候,利用easyui的验证功能判断 学号是否重复和学号只能为数字 最终效果如下图: 但在做这个的过程中,遇到了一系列的问题: 扩展validatebox的验证方法,最 ...

  4. jQuery form插件的使用--用 formData 参数校验表单,验证后提交(简单验证).

    Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 一.引入依赖js <script src=& ...

  5. aspx中的表单验证 jquery.validate.js 的使用 以及 jquery.validate相关扩展验证(Jquery表单提交验证插件)

    这一期我们先讲在aspx中使用 jquery.validate插件进行表单的验证, 关于MVC中使用 validate我们在下一期中再讲     上面是效果,下面来说使用步骤 jQuery.Valid ...

  6. ThinkPHP表单令牌验证功能详细介绍

    注:TP版本为3.1.3 在ThinkPHP框架下,两次提交同一个表单,比如提交信息后在浏览器点击后退退回上次的页面,重新点击提交按钮,就会提示“表单令牌错误”的信息. ThinkPHP新版内置了表单 ...

  7. struct2(六) 为表单添加验证

    简介 为表单添加验证 添加校验的方法: 1. first name 不能为null 2. Email address 不能为null 3. age 必须大于18岁 为了在用户提交的时候,能够校验这个表 ...

  8. PHP - 表单与验证

    第11章 表单与验证 学习要点: 1.Header()函数 2.接收及验证数据 我们对Web感兴趣,认为它有用的原因是其主要通过基于HTML的表单发布和收集信息的能力.这些表单用来鼓励网站的反馈.进行 ...

  9. HTML5表单及其验证

    随笔- 15 文章- 1 评论- 115 HTML5表单及其验证   HTML表单一直都是Web的核心技术之一,有了它我们才能在Web上进行各种各样的应用.HTML5 Forms新增了许多新控件及其A ...

  10. Laravel 更新数据时在表单请求验证中排除自己,检查指定字段唯一性

    原文地址:https://moell.cn/article/24 不错的laravel网站 需求场景 修改用户信息时,在表单请求验证中排除当前邮箱所在的记录行,并检查邮箱的唯一性. Laravel版本 ...

随机推荐

  1. WPF动画

    System.Windows.Media.Animation 这个命名空间中,包含了三种动画类:线性插值动画类(17个).关键帧动画(22个).路径动画(3个). 线性插值动画类(17个)如下: By ...

  2. redis实现spring-data-redis整合

    java之redis篇(spring-data-redis整合)  博客链接网址:http://www.cnblogs.com/yjmyzz/tag/redis/ redis的知识:官网 1,利用sp ...

  3. (转)Apache+Tomcat集群配置

    本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apache是ht ...

  4. 计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都能够看看.

    本书參照<<图形学扫盲>> 整理的,原文内容引子: http://www.cppblog.com/lai3d/archive/2008/12/30/70796.html 前言: ...

  5. easyUI的combobox设置隐藏和显示

    今天遇到一个需求,需要在combobox选择不同选项时,分别切换另一个控件为text或者combobox. 当时想了各种办法,想将combobx和text切换隐藏,但是都没得到自己想要的效果.最终还是 ...

  6. java 中Date的格式化样式

    public static void main(String[] args) { Date d = new Date(); System.out.println(d); // Date类的默认格式 T ...

  7. SQL:deferrable initially deferred

    SQL> create table cust(id number,name varchar2(10));Table created SQL> alter table cust add co ...

  8. SQL:define和verify命令及替换变量&

    =================替换变量&===============使用一个&符号来指定一个变量值,执行SQL语句时,会提示用户输入一个数值. SQL> select sa ...

  9. QQ浏览器不支持JS问题

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Android Service(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952435 相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的A ...