热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP过滤器详解

本文深入探讨了PHP中的过滤器机制,包括常见的$_SERVER变量、filter_has_var()函数、filter_id()函数、filter_input()函数及其数组形式、filter_list()函数以及filter_var()和其数组形式。同时,详细介绍了各种过滤器的用途和用法。

$_SERVER 变量详解

$_SERVER 是一个超全局变量,包含有诸如头信息(header)、路径(path)和脚本位置等信息。以下是一些常用的 $_SERVER 变量:

  • $_SERVER['HTTP_ACCEPT_LANGUAGE']: 浏览器语言。
  • $_SERVER['REMOTE_ADDR']: 当前用户的 IP 地址。
  • $_SERVER['REMOTE_HOST']: 当前用户的主机名。
  • $_SERVER['REQUEST_URI']: URL 请求的 URI。
  • $_SERVER['SERVER_NAME']: 服务器主机名称。
  • $_SERVER['REMOTE_PORT']: 用户端口。
  • $_SERVER['PHP_SELF']: 正在执行脚本的文件名。
  • $_SERVER['argv']: 传递给该脚本的参数数组。
  • $_SERVER['argc']: 传递给程序的命令行参数个数。
  • $_SERVER['GATEWAY_INTERFACE']: CGI 规范版本。
  • $_SERVER['SERVER_SOFTWARE']: 服务器标识字符串。
  • $_SERVER['SERVER_PROTOCOL']: 请求页面时的通信协议名称和版本。
  • $_SERVER['REQUEST_METHOD']: 请求方法(如 GET、POST 等)。
  • $_SERVER['QUERY_STRING']: 查询字符串。
  • $_SERVER['DOCUMENT_ROOT']: 当前运行脚本所在的文档根目录。
  • $_SERVER['HTTP_ACCEPT']: Accept 头部内容。
  • $_SERVER['HTTP_ACCEPT_CHARSET']: Accept-Charset 头部内容。
  • $_SERVER['HTTP_ACCEPT_ENCODING']: Accept-Encoding 头部内容。
  • $_SERVER['HTTP_CONNECTION']: Connection 头部内容。
  • $_SERVER['HTTP_HOST']: Host 头部内容。
  • $_SERVER['HTTP_REFERER']: 前一页面的 URL 地址。
  • $_SERVER['HTTP_USER_AGENT']: User-Agent 头部内容。
  • $_SERVER['HTTPS']: 如果通过 HTTPS 访问,则返回非空值;否则返回 'off'。
  • $_SERVER['SCRIPT_FILENAME']: 当前执行脚本的绝对路径名。
  • $_SERVER['SERVER_ADMIN']: 管理员信息。
  • $_SERVER['SERVER_PORT']: 服务器使用的端口。
  • $_SERVER['SERVER_SIGNATURE']: 包含服务器版本和虚拟主机名的字符串。
  • $_SERVER['PATH_TRANSLATED']: 当前脚本所在文件系统的基本路径。
  • $_SERVER['SCRIPT_NAME']: 当前脚本的路径。
  • $_SERVER['PHP_AUTH_USER']: HTTP 认证用户名。
  • $_SERVER['PHP_AUTH_PW']: HTTP 认证密码。
  • $_SERVER['AUTH_TYPE']: HTTP 认证类型。

filter_has_var() 函数

filter_has_var() 函数用于检查指定输入类型的变量是否存在。如果存在则返回 TRUE, 否则返回 FALSE。例如:
filter_has_var(INPUT_GET, 'name');
filter_has_var(INPUT_POST, 'name');
filter_has_var(INPUT_COOKIE, 'name');
filter_has_var(INPUT_SERVER, 'name');
filter_has_var(INPUT_ENV, 'name');


filter_id() 函数

filter_id() 函数返回指定过滤器的 ID 号。如果成功则返回过滤器的 ID 号,如果过滤器不存在则返回 NULL。例如:
filter_id('FILTER_SANITIZE_STRING');


filter_input() 函数

filter_input() 函数从外部获取输入并进行过滤。它用于验证来自非安全来源的变量,如用户输入。函数语法如下:
filter_input(input_type, variable, filter, options);
其中:

  • input_type: 必需,规定输入类型(如 INPUT_GET, INPUT_POST 等)。
  • variable: 必需,规定要过滤的变量。
  • filter: 可选,规定要使用的过滤器 ID 或名称,默认是 FILTER_SANITIZE_STRING。
  • options: 可选,规定一个包含标志/选项的关联数组或单一标志/选项。


filter_input_array() 函数

filter_input_array() 函数从外部获取多项输入并进行过滤,类似于 filter_input() 的数组形式。函数语法如下:
filter_input_array(input_type, filter_args);
其中:

  • input_type: 规定外部输入需要过滤的数组。
  • filter_args: 可选,规定过滤器参数的数组,键名为变量名,值为过滤器 ID 或名称。


filter_list() 函数

filter_list() 函数返回所有可用过滤器的名称列表。例如:
$filters = filter_list(); print_r($filters);


filter_var() 函数

filter_var() 函数通过指定的过滤器过滤单个变量。如果成功则返回过滤后的数据,失败则返回 FALSE。函数语法如下:
filter_var(variable, filter, options);
其中:

  • variable: 必需,规定要过滤的变量。
  • filter: 可选,规定要使用的过滤器 ID,默认是 FILTER_SANITIZE_STRING。
  • options: 可选,规定一个包含标志/选项的关联数组或单一标志/选项。


filter_var_array() 函数

filter_var_array() 函数获取多个变量并进行过滤,是 filter_var() 的数组形式。函数语法如下:
filter_var_array(array, args);
其中:

  • array: 必需,规定带有字符串键名的数组,包含要过滤的数据。
  • args: 可选,规定过滤参数数组,键名为变量名,值为过滤器 ID。


PHP 过滤器

PHP 提供了一系列内置过滤器来处理不同类型的输入数据。以下是常见的过滤器:

  • FILTER_CALLBACK: 调用用户自定义函数来过滤数据。
  • FILTER_SANITIZE_STRING: 去除标签并编码特殊字符。
  • FILTER_SANITIZE_STRIPPED: 别名为 "string" 过滤器。
  • FILTER_SANITIZE_ENCODED: URL 编码字符串并去除或编码特殊字符。
  • FILTER_SANITIZE_SPECIAL_CHARS: HTML 转义字符。
  • FILTER_SANITIZE_EMAIL: 删除无效字符,保留有效电子邮件字符。
  • FILTER_SANITIZE_URL: 删除无效字符,保留有效 URL 字符。
  • FILTER_SANITIZE_NUMBER_INT: 删除非数字字符,保留整数。
  • FILTER_SANITIZE_NUMBER_FLOAT: 删除非数字字符,保留浮点数。
  • FILTER_SANITIZE_MAGIC_QUOTES: 应用 addslashes()。
  • FILTER_UNSAFE_RAW: 不进行任何过滤。
  • FILTER_VALIDATE_INT: 验证整数。
  • FILTER_VALIDATE_BOOLEAN: 验证布尔值。
  • FILTER_VALIDATE_FLOAT: 验证浮点数。
  • FILTER_VALIDATE_REGEXP: 使用正则表达式验证。
  • FILTER_VALIDATE_URL: 验证 URL。
  • FILTER_VALIDATE_EMAIL: 验证电子邮件地址。
  • FILTER_VALIDATE_IP: 验证 IP 地址。

推荐阅读
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
author-avatar
cocoa果果_263
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有