php 过滤变量,php中的变量、过滤器、常量

变量

1. 作用域变量作用域,也叫”变量范围”, 即定义变量时的上下文环境

变量作用域,通俗的说,就是变量的生效范围

一个变量必定属于一个作用域, 这个作用域也包括了当前作用域中引入其它文件

也有不受作用域限制的变量,例如超全局变量, 在程序中任何地方都是有定义的

函数作用域: php 中只有函数可以创建作用域, 函数之外的代码全部在全局空间中

序号

作用域

描述

1

函数作用域

使用function关键字创建的作用域

2

全局作用域

函数之外的变量生效范围

php 中没有块作用域的概念, 这与其它编程语言不同, 请留意

根据作用域不同, 变量可以分为三类:

序号

变量类型

描述

1

私有变量

函数中定义的变量

2

全局变量

函数之外定义的变量

3

超全局变量

也叫预定义变量,访问不受作用域限制

超全局变量,也叫超全局数组,随系统加载,因此在所有脚本中均有定义,全局和函数中都可以访问

序号

变量名

描述

1

$GLOBALS

引用全局作用域中可用的全部变量

2

$_SERVER

服务器和执行环境信息

3

$_GET

HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组

4

$_POST

HTTP POST 请求: 将变量以关联数组形式传入当前脚本

5

$_FILES

HTTP 文件上传变量,保存着上传文件的全部信息

6

$_COOKIE

通过 HTTP Cookies 方式传递给当前脚本的变量的数组

7

$_SESSION

当前脚本可用 SESSION 变量的数组

8

$_REQUEST

默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组

9

$_ENV

通过环境方式传递给当前脚本的变量的数组

//变量作用域

//全局作用域

$sitename='PHP中文网';

functiongetInfo():string

{

//在函数中无法访问全局变量 需要global引用全局变量或者使用超全局变量$GLOBALS

// global $sitename;

// $private = $sitename;

// 超全局变量不需要定义不需要初始化 在脚本中直接使用

$private=$GLOBALS['sitename'];

return$private;

}

echo getInfo();

2静态变量

static + 变量

定义在函数中的静态变量使用static修饰,并且与函数作用域绑定

静态变量定义时必须初始化,且只能初始化一次,默认为0

当程序执行离开函数作用域后,静态变量的值不丢失

静态变量的值,可以在函数的多次调用中保持不变,即可带入下次调用中

函数中静态变量遵循私有变量约束, 全局不可访问<?php

functiontest1():string

{

//静态变量只在第一次调用的时候被初始化,以后不会被更新

//实现函数在多次调用的时候的数据共享

static$sum=0;

$sum=$sum+1;

return$sum;

}

echo test1(),'
';

echo test1(),'
';

echo test1(),'
';

运行结果是1 ,2 ,3

3变量过滤器

3.1过滤单个变量使用filter_var

//遍历所有过滤器

foreach(filter_list()as$filter){

echo $filter.'==>'.filter_id($filter).'
';

}

//1.过滤单个变量

//int过滤器

$age=-1;

var_dump(filter_var($age,FILTER_VALIDATE_INT,['options'=>['min_range'=>18,'max_range'=>60]]));

echo'
';

//url过滤器正确的url要从http://开始

$blog='baidu.com';

var_dump(filter_var($blog,FILTER_VALIDATE_URL));

echo'
';

//邮箱过滤器

var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));

3.2过滤多个变量使用filter_var_array//1.过滤多个变量

$arr=array(

'abc',

200

);

var_dump(filter_var_array($arr,FILTER_VALIDATE_EMAIL));

3.3检测是否存在外部变量使用函数filter_has_var()

//检测外部变量是否存在使用函数filter_has_var()

//URL地址?后面的键值对

//INPUT_GET表示要检测的是$_GET

var_dump(filter_has_var(INPUT_GET,'p'));

3.4访问外部变量的过滤器filter_input

主要是为了验证数据

filter_input(INPUT_GET,'p',FILTER_VALIDATE_INT,['options'=>['min_range'=>1]]));

3.5同时验证多个外部变量的过滤器filter_input_array()

变量是个数组

$args=[

'username'=>FILTER_SANITIZE_STRING,

'email'=>FILTER_VALIDATE_EMAIL,

'age'=>['filter'=>FILTER_VALIDATE_INT,'flags'=>FILTER_REQUIRE_SCALAR,'options'=>['min_range'=>18]],

'blog'=>FILTER_VALIDATE_URL,

];

var_dump(filter_input_array(INPUT_GET,$args));

4常量

常量

1. 特征序号

特征

1

常量前面没有美元符号$

2

常量创建时必须初始化

3

常量禁止更新和删除

4

常量不受作用域限制

5

推荐使用大写字母加下划线命名

2. 函数/关键字序号

定义方式

描述

1

get_defined_constants()

查看系统所有常量

2

defined()

检测常量是否存在

3

define()

创建常量

4

const 关键字

创建常量

5

constant()

获取常量值

get_defined_constants(true): 常量分组打印,自定义常量在user分组

defined(): 返回布尔值

-constant():当不知道常量时查找

```php

//定义常量

//1.define()函数,不能用在类里面

define(‘LECTURE’,’朱老师’);

//const关键字不能再函数中创建 流程控制中可不能使用

const COURSE =’php’;

//常量不受作用域的限制

function test1()

{

echo LECTURE . COURSE;

}

//const用在类中,创建类常量

class Demo

{

const HELLO = ‘php’;

}

echo Demo::HELLO;

//常量通常只允许用标量进行初始化

//php7.0++支持数组初始化常量

const DB_LINK =[

‘host’ => ‘localhost’,

‘username’ =>’root’,

‘password’ =>’root’,

‘charset’ =>’utf8’,

];

echo ‘

‘.print_r(DB_LINK,true).’
‘;

```

3. 预定义常量

预定义常量非常多,有许多与具体扩展相关,如 PDO, 这里仅列出系统级常用的:

序号

预定义常量

描述

1

PHP_VERSION

PHP 版本

2

PHP_MAXPATHLEN

PHP 路径最大长度:1024

3

PHP_OS_FAMILY

操作系统:Windows/Darwin/Linux

4

PHP_SAPI

web 服务器与 php 之间接口: apache2handler

5

PHP_EOL

行尾结束符

6

PHP_INT_MAX

最大整数: 9223372036854775807

7

PHP_INT_MIN

最小整数: -9223372036854775808

8

PHP_INT_SIZE

整数宽度: 8

9

PHP_FLOAT_MAX

最大浮点数:1.7976931348623E+308

10

PHP_FLOAT_MIN

整小浮点数: 2.2250738585072E-308

11

DEFAULT_INCLUDE_PATH

默认 PHP 命令路径

12

PHP_EXTENSION_DIR

默认 PHP 扩展路径

13

E_ERROR

运行时错误: 致命中断

14

E_PARSE

语法解析错误: 致命中断

15

E_NOTICE

运行时提示: 不中断

16

E_WARNING

运行时警告: 不中断

17

E_ALL

所有级别错误(除E_STRICT)

18

E_STRICT

更加严格的错误处理机制,高于E_ALL

19

TRUE

布尔真

20

FALSE

布尔假

21

NULL

22

DIRECTORY_SEPARATOR

目录分隔符

4. 魔术常量魔术常量也属于”预定义常量”, 比较特殊所有单独列出

所谓”魔术”, 是指常量的值, 会随它们在代码中的位置改变而改变

魔术常量不区分大小写, 但是推荐全部大写

序号

魔术常量

描述

1

__LINE__

文件中的当前行号

2

__FILE__

文件的完整路径和文件名

3

__DIR__

文件所在目录

4

__FUNCTION__

当前的函数名称

5

__CLASS__

当前类名称

6

__TRAIT__

当前Trait名称

7

__METHOD__

当前类方法名称

8

__NAMESPACE__

当前命名空间名称

总结

1.php中有常量,变量,静态变量,全局变量。变量,常量的作用域也不同

2.过滤器能将用户输入的数据筛选,从而输入我们想要的数据。

3.常量的创建和使用以及const与define()应用的场景

4.系统预定义的一些常量,魔术常量的特点,这些都需要熟悉自己验证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值