热门标签 | 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 地址。

推荐阅读
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
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社区 版权所有