批改状态:合格
老师批语:可以!继续加油!
首先是变量,变量是什么呢,简单来说就是保存数据一个容器,例如你的钱包,你的钱包可以放钱,放信用卡,放宾馆塞进门下的小卡片,放你前女友的照片
钱包就是你定义的变量,而你塞进钱包里的东西,就是变量的值,你的值可以随时更改,例如你买东西花出去一百,然后一低头又捡到一千块,你把捡到的一千块放进钱包,这时钱包里边的值就进行了更改
变量怎么定义呢?有两种方式
$name = 'jack';
$$name = 'liu';echo $jack; // 输出: liuecho $$name; // 输出: liu
常量是什么呢,常量跟变量差不多,不过常量的不可变的变量,例如我是菜鸡(暴风哭泣 T_T),例如你是个女(男)生,你的性别一般是不可变的
怎么定义呢?这个也有两种方式
const USER_NAME = "jack";
define('USER_AGE',24)
作用域是什么呢,顾名思义,就是起作用的区域,那具体是谁起作用的区域呢,就是咱们定义的变量和常量,作用域有两种
// 可以直接输出在上边定义的变量echo $name;
function getName(){// 函数内部无法直接访问全局变量,要访问全局变量有两种方式// echo $name;// 第一种方式: GLOBAL 关键字引入GLOBAL $name;echo '我是GLOBAL关键字引入的变量:'.$name.'<hr/>';// 第二种方式: 使用$GLOBALS对象echo '我是使用$GLOBAL全局对象引入的变量:'.$GLOBALS['name'].'<hr/>';// 函数内部可直接使用常量echo '我是在函数作用域内访问的常量:'.USER_NAME.','.USER_AGE.'<hr/>';};
命名空间,顾名思义,就是用来限定常量命名的一个非开放空间,在不用命名空间里可以定义相同命名的变量而不会产生错误,命名空间之外除了其余命名空间外,不能再有其他代码
namespace space1 {const USER_NAME = 'space1-jack';$userName = 'jackliu';echo '</br>';};namespace space2 {const USER_NAME = 'space2-jack';echo '在space2中引用上层space1中的常量USER_NAME:'.\space1\USER_NAME.'<hr/>';// 访问变量会报错// echo '在space2中引用上层space1中的变量:'.\space1\$userName.'<hr/>';}// 匿名空间,可读取在之前引入或定义的任何命名空间里的常量namespace {echo '在space中引用上层space1中的常量USER_NAME:'.\space1\USER_NAME.'<hr/>';echo '在space中引用上层space2中的常量USER_NAME:'.\space2\USER_NAME.'<hr/>';}
过滤器一般用在外部变量的验证,例如表单,cookie,数据库返回数据,
过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。
过滤器函数有以下几个
| 函数 | 描述 |
|---|---|
| filter_has_var() | 检查是否存在指定输入类型的变量。 |
| filter_id() | 返回指定过滤器的 ID 号。 |
| filter_input() | 从脚本外部获取输入,并进行过滤。 |
| filter_input_array() | 从脚本外部获取多项输入,并进行过滤。 |
| filter_list() | 返回包含所有得到支持的过滤器的一个数组。 |
| filter_var_array() | 获取多项变量,并进行过滤。 |
| filter_var() | 获取一个变量,并进行过滤。 |
验证器常量有
| 序号 | 过滤器函数 | 描述 |
|---|---|---|
| 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() |
东西太多了,就挑几个简单的来写吧 - -
$id = 111;// 验证是否为整数if(filter_var($id,FILTER_VALIDATE_INT)){echo "id验证通过====</br>";}else{echo "id验证未通过</br>";}// 结果为:id验证通过====$email = 'jack@liu.cn';// 类型:邮箱if(filter_var($email,FILTER_VALIDATE_EMAIL)){echo "邮箱验证通过====</br>";}else{echo "邮箱验证未通过</br>";}// 结果为: 邮箱验证通过====
// 需要验证的数组$testArr = array('age' => 18 ,'gender' => '男','address' => 'shanghai','link' => 'http://www.jack.cn');// 对应的验证规则// 分别为 可选范围整数, 用户自定义规则 , url$filterArr = array('age' => array('filter'=> FILTER_VALIDATE_INT,'options'=>array('min_range'=>9,'max_range'=>99)),'gender'=>array('filter'=> FILTER_CALLBACK,'options'=>"judgingGender"),'address'=> FILTER_SANITIZE_STRING,'link'=> FILTER_VALIDATE_URL);// 自定义规则函数function judgingGender($str){if(is_string($str) && ($str == '男' || $str == '女')){return $str;}else{return false;}}echo print_r(filter_var_array($testArr,$filterArr),true);// 结果为: Array ( [age] => 18 [gender] => 男 [address] => shanghai [link] => http://www.jack.cn )
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号