1、全局变量与超全局变量

全局变量
全局变量就是在函数外面定义的变量。不能在函数中直接使用。因为它的作用域不 会到函数内部。所以在函数内部使用的时候常常看到类似global $a;
超全局变量
超全局变量作用域在所有脚本都有效。所以,在函数可直接使用。比如 $_GET,$_SERVER都是超全局变量。除$_GET,$_POST,$_SERVER,$_COOKIE等之外的超全局变量保存在$GLOBALS数组中。

2、常见的超全局变量

$GLOBALS $_SERVER
$_REQUEST $_POST
$_GET $_FILES
$_ENV $_COOKIE
$_SESSION

1)$GLOBALS

global
global的作用是定义全局变量,只应用于当前网页(包括include和require的所有文件)而不是整个网站
$GLOBALS
$GLOBALS用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)

2)$_SERVER

这种超全局变量保存关于报头、路径和脚本位置的信息等。
image.png
$_SERVER[‘REQUEST_URI’]——获取请求url的路径地址
image.png
image.png

3)$_POST和$_GET

POST(隐藏传参)
$_POST向服务器传送数据。将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程
GET (URL传参)
$_GET从服务器上获取数据,把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到

4)$_REQUEST

php中$_REQUEST可以获取以POST方法和GET方法提交的数据
尽量不要使用$_REQUEST,应该从$_GET,$_POST,$COOKIE,$_ENV,$_SERVER等变量中取出需要的值

5)$_FILES

$_FILES[‘file’][‘name’] 显示客户端文件的原名称。
$_FILES[‘file’][‘type’] 文件的 MIME 类型,例如”image/gif“
$_FILES[‘file’][‘size’] 已上传文件的大小,单位为字节。
$_FILES[‘file’][‘tmp_name’] 储存的临时文件名,一般是系统默认。
$_FILES[‘file’][‘error’] 该文件上传相关的错误代码。

6)$_SESSION

当前脚本可用 SESSION 变量的数组。
$HTTP_SESSION_VARS 包含相同的信息(4.1.0已废弃),但它不是一个超全局变量。
注意:$HTTP_SESSION_VARS 和 $_SESSION 是不同的变量,PHP 处理它们的方式不同

  1. <?php
  2. //从创建到销毁一个session会话
  3. session_start();
  4. $test = 123;
  5. $_SESSION['value'] = $test;
  6. echo $_SESSION['value'];
  7. session_destroy();

7)$_COOKIE

通过 HTTP Cookies 方式传递给当前脚本的变量的数组,只是读取作用
$HTTP_COOKIE_VARS 包含相同的信息,但它不是一个超全局变量
注意: $HTTP_COOKIE_VARS 和 $_COOKIE 是不同的变量,PHP 处理它们的方式不同

8)$_ENV

$_ENV包含服务器端环境变量的数组,可在PHP程序的任何地方直接访问
$_ENV只是被动的接受服务器端的环境变量转换为数组元素

3、正则表达式

<?php
//1、普通字符作为原子

//$pattern = '/abc/';
//$str = 'abcasdgxsvadgadfabc';
//preg_match_all($pattern,$str,$result);
//var_dump($result);
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:6:
//array (size=1)
//  0 =>
//    array (size=2)
//      0 => string 'abc' (length=3)
//      1 => string 'abc' (length=3)


//2、特殊符号作为原子,要用\转义

//$pattern = '/\[php\]/';
//$str = 'abcasdgxs[php]c';
//preg_match_all($pattern,$str,$result);
//var_dump($result);
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:20:
//array (size=1)
//  0 =>
//    array (size=1)
//      0 => string '[php]' (length=5)


//3、通用字符作为原子

//$pattern = '/\d/';    //还有/D,/w,/W等等
//$str = 'abc156gx154s[php]c';
//preg_match_all($pattern,$str,$result);
//var_dump($result);
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:33:
//array (size=1)
//  0 =>
//    array (size=6)
//      0 => string '1' (length=1)
//      1 => string '5' (length=1)
//      2 => string '6' (length=1)
//      3 => string '1' (length=1)
//      4 => string '5' (length=1)
//      5 => string '4' (length=1)


//4、自定义原子

//$pattern = '/[aj]sp/';    //还有/D,/w,/W等等
//$str = 'aspasdjspsxcvajsp';
//preg_match_all($pattern,$str,$result);
//var_dump($result);
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:51:
//array (size=1)
//  0 =>
//    array (size=3)
//      0 => string 'asp' (length=3)
//      1 => string 'jsp' (length=3)
//      2 => string 'jsp' (length=3)


//5、限定符

//$pattern1 = '/go*gle/';  //匹配前面出的现原子0-无数次
//$pattern2 = '/go+gle/';  //匹配前面出现的原子1-无数次
//$pattern3 = '/go?gle/';  //配匹前面出现的原子0-1次
//$str = 'ggleasdgogleasdgoooogle';
//preg_match_all($pattern1,$str,$result1);
//preg_match_all($pattern2,$str,$result2);
//preg_match_all($pattern3,$str,$result3);
//var_dump($result1);
//var_dump($result2);
//var_dump($result3);
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:72:
//array (size=1)
//  0 =>
//    array (size=3)
//      0 => string 'ggle' (length=4)
//      1 => string 'gogle' (length=5)
//      2 => string 'goooogle' (length=8)
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:73:
//array (size=1)
//  0 =>
//    array (size=2)
//      0 => string 'gogle' (length=5)
//      1 => string 'goooogle' (length=8)
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:74:
//array (size=1)
//  0 =>
//    array (size=2)
//      0 => string 'ggle' (length=4)
//      1 => string 'gogle' (length=5)


//6、边界限定

//$pattern1 = '/^abc/';  //字符串开头的abc,无则反空
//$pattern2 = '/abc$/';  //字符串结尾的abc,无则反空
//$pattern3 = '/^abc$/';  //只匹配abc,无则反空
//$str1 = 'abcfvccc';
//$str2 = 'fvaabc';
//$str3 = 'abc';
//preg_match_all($pattern1,$str1,$result1);
//preg_match_all($pattern2,$str2,$result2);
//preg_match_all($pattern3,$str3,$result3);
//var_dump($result1);
//var_dump($result2);
//var_dump($result3);
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:107:
//array (size=1)
//  0 =>
//    array (size=1)
//      0 => string 'abc' (length=3)
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:108:
//array (size=1)
//  0 =>
//    array (size=1)
//      0 => string 'abc' (length=3)
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:109:
//array (size=1)
//  0 =>
//    array (size=1)
//      0 => string 'abc' (length=3)


//7、反向引用

//$pattern = '/\d{4}(-)\d{2}\\1\d{2}/';   // \\1代表第一个()的缓冲区,可理解为第一个括号的内容
//$str = '2020-07-13';
//preg_match_all($pattern,$str,$result);
//var_dump($result);
//
//E:\phpstudy\PHPTutorial\WWW\eval.php:134:
//array (size=2)
//  0 =>
//    array (size=1)
//      0 => string '2020-07-13' (length=10)
//  1 =>
//    array (size=1)
//      0 => string '-' (length=1)