批改状态:合格
老师批语:过滤器函数一定要多加练习!
<?php//全局作用域:函数外部定义的变量,只能在函数外部进行访问$userName = '黄剑聪';echo $userName;?>
第一种:
<?php//函数作用域:函数外部定义的变量,只能在函数外部进行访问$userName = '你好,黄剑聪';// echo $userName;function getinfo(){//访问函数外部的变量有两种方法//第一种,在函数中做一个声明用globalglobal $userName;return $userName;}echo getinfo();?>
第二种:
<?php//函数作用域:函数外部定义的变量,只能在函数外部进行访问$userName = '黄剑聪';// echo $userName;function getinfo(){//访问函数外部的变量有两种方法//第二种,通过超全局变量$GLOBALS来访问//超全局变量, 不受作用域限制,可以在函数中直接访问return $GLOBALS ['userName'];}echo getinfo();?>
常量前面没有美元符号($);常量必须初始化;常量不能删除输出:echo constant('');常量可以不用理会变量的作用域而在任何地方定义和访问;常量一旦定义就不能被重新定义或者取消定义;
<?php//使用关键字 const 定义常量const APP_PATH = '/phpstudy_pro';echo APP_PATH;?>
<?php//使用关键字 define 定义常量define('APP_NAME', '人才管理系统');echo APP_NAME;?>
echo '版本号: ' . PHP_VERSION . '<br>';echo '操作系统: ' . PHP_OS_FAMILY . '<br>';echo '最大整数: ' . PHP_INT_MAX . '<br>';echo '最大浮点数: ' . PHP_FLOAT_MAX . '<br>';echo '目录分隔符: ' . DIRECTORY_SEPARATOR . '<hr>';
| 序号 | 魔术常量 | 描述 |
|---|---|---|
| 1 | __LINE__ |
文件中的当前行号 |
| 2 | __FILE__ |
文件的完整路径和文件名 |
| 3 | __DIR__ |
文件所在目录 |
| 4 | __FUNCTION__ |
当前的函数名称 |
| 5 | __CLASS__ |
当前类名称 |
| 6 | __TRAIT__ |
当前Trait名称 |
| 7 | __METHOD__ |
当前类方法名称 |
| 8 | __NAMESPACE__ |
当前命名空间名称 |
命名空间: 解决了全局成员 的命名冲突问题全局空间中的成员, 不允许重复定义其实类与函数也是全局成员, 也不允许重复定义全局成员: 常量, 类, 函数, 接口
以一个案例来解说:
<?phpnamespace a {const SITE_NAME = 'PHP中文网';}namespace b {const SITE_NAME = 'www.php.cn';}//全局空间: 匿名空间namespace {echo \a\SITE_NAME, '<br>';echo \b\SITE_NAME, '<br>';}?>
过滤器简介:PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。查看当前php版本支持的预定义过滤器:foreach (filter_list() as $filter) {echo $filter . ' => ' .filter_id($filter);
<?php//过滤单个变量:filter_var(要过滤的变量, 过滤器常量)$var = 35;$options = ['options'=>['min_range'=> 35, 'max_range'=> 60]];var_dump(filter_var($var, FILTER_VALIDATE_INT, $options));//如何给这个数值设定为一个范围:使用$options参数 min_range(最小值),max_range(最大值)echo '<hr>';$username = 'huang';var_dump(filter_var($username,FILTER_SANITIZE_STRING));?>
<?php$a = 'ab';$b = 'cde';$arr = [$a, $b];var_dump(filter_var_array($arr, FILTER_SANITIZE_STRING));//echo '<hr>';$a = 10;$b = '90';$arr = [$a, $b];var_dump(filter_var_array($arr, FILTER_VALIDATE_INT));?>
<?php// 外部过滤器:filter_input(输入类型get/post, 变量名, 过滤器, 参数)// 使用GET参数来演示外部变量的获取与验证/过滤var_dump(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT));?>
<?php$args=['email'=>FILTER_SANITIZE_EMAIL,'ags'=>['filter'=>FILTER_VALIDATE_INT, 'options'=>['min_range'=> 18, 'max_range'=> 60]],'username'=>FILTER_SANITIZE_STRING,'blog'=>FILTER_VALIDATE_URL,];var_dump(filter_input_array(INPUT_GET, $args));?>
外部数据来源:
| 序号 | 数据来源 | 描述 |
| —— | ——————— | ——————————— |
| 1 | 表单 | 来自表音的用户输入数据 |
| 2 | Cookies | 来自浏览器中的 cookie |
| 3 | 服务器变量 | 防止伪装的合法访问 |
| 4 | Web 服务数据 | Web 请求的数据 |
| 5 | 数据库查询结果 | 数据表中的数据并不可信 |
常用的过滤器函数
| 序号 | 函数 | 描述 |
| —— | ——————————— | ———————————— |
| 1 | filter_list() | |
| 2 | filter_id() | |
| 3 | filter_var() | 过滤单个变量 |
| 4 | filter_var_array() | 过滤多个变量 |
| 5 | filter_has_var() | 检测是否存在某个外部变量 |
| 6 | filter_input() | 过滤单个外部变量 |
| 7 | filter_input_array() | 过滤多个外部变量 |
外部变量类型: INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV
过滤器主要分为二类: 验证过滤器, 清理过滤器
验证过滤器: 又叫”验证器”, 主要用于数据的类型和格式验证
| 序号 | 过滤器函数 | 描述 |
| —— | ————————————- | ——————- |
| 1 | FILTER_VALIDATE_INT | 验证整数 |
| 2 | FILTER_VALIDATE_FLOAT | 浮点点验证 |
| 3 | FILTER_VALIDATE_BOOLEAN | 验证布尔项 |
| 4 | FILTER_VALIDATE_EMAIL | 验证邮箱 |
| 5 | FILTER_VALIDATE_URL | 验证 URL 地址 |
| 6 | FILTER_VALIDATE_IP | 验证 IP 地址 |
| 7 | FILTER_VALIDATE_REGEXP | 正则验证 |
FILTER_VALIDATE_BOOLEAN: 布尔选项的返回值类型
| 序号 | 返回值 | 描述 |
| —— | ———- | ——————————————- |
| 1 | true | “1”, “true”, “on” 和 “yes” |
| 2 | false | “0”, “false”, “off”, “no”, “” |
| 3 | null | 除以上情形外 |
清理过滤器: 去掉非法字符,仅保留指定内容
| 序号 | 过滤器函数 | 描述 |
| —— | ———————————————- | —————————————————————— |
| 1 | FILTER_UNSAFE_RAW | 保持原始数据 |
| 2 | FILTER CALLBACK | 自定义函数过滤数据 |
| 3 | FILTER_SANITIZE_STRING | 去除标签以及特殊字符:strip_tags() |
| 4 | FILTER_SANITIZE_STRIPPED | “string” 过滤器别名 |
| 5 | FILTER_SANITIZE_ENCODED | URL-encode 字符串,去除或编码特殊字符 |
| 6 | FILTER_SANITIZE_SPECIAL_CHARS | HTML 转义字符, 等价于 htmlspecialchars() |
| 7 | FILTER_SANITIZE_EMAIL | 仅保留邮箱地址的合法字符 |
| 8 | FILTER_SANITIZE_URL | 仅保留合法的 URL, 必须从协议开始http/https |
| 9 | FILTER_SANITIZE_NUMBER_INT | 仅保留合法的数字和正负号+- |
| 10 | FILTER_SANITIZE_NUMBER_FLOAT | 仅保留合法的数字和正负号+- 以及指数 .,eE |
| 11 | FILTER_SANITIZE_MAGIC_QUOTES | 等价于函数: addslashes() |
选项与标志 选项与标志
'options'=>[...], 'flags'=>...(复数)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号