filter_var()函数用于过滤和验证用户输入的数据

filter_var()函数用于过滤和验证用户输入的数据,它的第一个参数是用户输入的数据,第二个参数是过滤器类型,第三个参数是可选的,表示过滤器的选项。它的返回值是过滤后的数据(过滤器类型为FILTER_SANITIZE_)或者是验证结果(过滤器类型为FILTER_VALIDATE_)。

在PHP中,过滤器类型(filter_type)是一个常量,以FILTER_开头,后面跟着具体的类型,例如:

立即学习"PHP免费学习笔记(深入)";

  • FILTER_VALIDATE_EMAIL:验证电子邮件地址
  • FILTER_VALIDATE_IP:验证IP地址
  • FILTER_VALIDATE_URL:验证URL地址
  • FILTER_SANITIZE_STRING:过滤字符串(删除或编码HTML标签)
  • FILTER_SANITIZE_NUMBER_INT:过滤数字(删除除数字外的所有字符)
  • FILTER_SANITIZE_SPECIAL_CHARS:过滤特殊字符(对特殊字符进行编码)

除此之外,PHP还提供了许多其他的过滤器类型,可以根据具体的需求选择使用。

常见用法

下面我们将通过一些常见的示例来演示filter_var()函数的用法。

验证电子邮件地址

在表单中,通常需要用户输入电子邮件地址,我们需要保证用户输入的电子邮件地址是合法的,可以使用FILTER_VALIDATE_EMAIL过滤器进行验证。

|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | $email = ``'example@gmail.com'``; if``(filter_var(``$email``, FILTER_VALIDATE_EMAIL)){ ``echo "电子邮件地址合法"``; } ``else { ``echo "电子邮件地址非法"``; } |

验证IP地址

在一些情况下,我们需要验证用户的IP地址,例如限制访问范围等。可以使用FILTER_VALIDATE_IP过滤器进行验证。

|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | $ip = ``'192.168.1.1'``; if``(filter_var(``$ip``, FILTER_VALIDATE_IP)){ ``echo "IP地址合法"``; } ``else { ``echo "IP地址非法"``; } |

验证URL地址

在表单中,通常需要用户输入URL地址,我们需要保证用户输入的URL地址是合法的,可以使用FILTER_VALIDATE_URL过滤器进行验证。

|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | $url = ``'http://www.example.com'``; if``(filter_var(``$url``, FILTER_VALIDATE_URL)){ ``echo "URL地址合法"``; } ``else { ``echo "URL地址非法"``; } |

过滤字符串

在处理用户输入的字符串时,我们需要对其中的一些特殊字符进行过滤,例如去除HTML标签、对特殊字符进行编码等,可以使用FILTER_SANITIZE_STRING或FILTER_SANITIZE_SPECIAL_CHARS过滤器进行过滤。

|-----|-------------------------------------------------------------------------------------------------------------------------------|
| 1 2 | $str = ``'<script>alert("恶意攻击")</script>'``; echo filter_var(``$str``, FILTER_SANITIZE_STRING); ``// 输出:alert("恶意攻击") |

|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 | $str = ``'<script>alert("恶意攻击")</script>'``; echo filter_var(``$str``, FILTER_SANITIZE_SPECIAL_CHARS); ``// 输出:<script>alert("恶意攻击")</script> |

过滤数字

在处理用户输入的数字时,我们需要保证其中的字符都是数字,可以使用FILTER_SANITIZE_NUMBER_INT过滤器进行数字过滤。

|-----|------------------------------------------------------------------------------------------------------------|
| 1 2 | $num = ``'1234abc5678d'``; echo filter_var(``$num``, FILTER_SANITIZE_NUMBER_INT); ``// 输出:12345678 |

具体代码示例

下面是一些具体的代码示例,可以直接拿来使用或修改适应自己的业务需求。

验证用户名

|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | function validate_username(``$username``){ ``$options = ``array``( ``'options' =&gt; ``array``( ``'regexp' =&gt; ``'/^[wd]{6,20}$/i' //用户名由6-20个字母、数字或下划线组成 ``) ``); ``return filter_var(``$username``, FILTER_VALIDATE_REGEXP, ``$options``); } |

验证密码

|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | function validate_password(``$password``){ ``$options = ``array``( ``'options' =&gt; ``array``( ``'regexp' =&gt; ``'/^[wd!@#$%^&amp;*()_+-=]{6,20}$/i' //密码由6-20个字母、数字或特殊字符组成 ``) ``); ``return filter_var(``$password``, FILTER_VALIDATE_REGEXP, ``$options``); } |

验证手机号码

|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | function validate_mobile(``$mobile``){ ``$options = ``array``( ``'options' =&gt; ``array``( ``'regexp' =&gt; ``'/^1[3456789]d{9}$/i' //中国的手机号码 ``) ``); ``return filter_var(``$mobile``, FILTER_VALIDATE_REGEXP, ``$options``); } |

验证身份证号码

|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | function validate_id_number(``$id_number``){ ``$options = ``array``( ``'options' =&gt; ``array``( ``'regexp' =&gt; ``'/^[d]{17}[dX]$/i' //中国的身份证号码 ``) ``); ``return filter_var(``$id_number``, FILTER_VALIDATE_REGEXP, ``$options``); } |

结语

在现代的网站开发中,数据的验证和安全性至关重要。使用PHP的filter_var()函数,可以轻松实现对用户输入的数据进行各种验证和过滤,有效提高网站的数据安全性。本文介绍了filter_var()函数的基本概念和常见用法,并给出了一些实用的代码示例,希望对PHP开发者有所帮助。

相关推荐
阿巴斯甜8 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker9 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952710 小时前
Andorid Google 登录接入文档
android
黄林晴11 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android