PHP变量规则

  • 变量以$符号开头,其后是变量的名称;
  • 变量名称必须已字母或者下划线开头;
  • 变量名称不能以数字开头;
  • 变量名称只能包含字母数字字符和下划线(A-z、0-9以及 _ );
  • 变量名称对大小写敏感($y和$Y是两个不同的变量)

注释:PHP变量名称对大小写敏感

创建PHP变量

PHP变量没有创建变量的命令。变量会在首次为其赋值时被创建。

PHP是一门类型松散的语言

注意我们不必告知PHP变量的数据类型。

PHP根据它的值,自动把变量转换为正确的数据类型。

在诸如C和C++以及Java之类的语言中,程序员必须在使用变量之前声明他的名称和类型。

PHP变量作用域

  • local(局部)
  • global(全局)
  • static(静态)

PHP global关键词

global关键词用于在函数内访问全局变量,即可以在函数内部变量前面使用global关键词。

PHP同时在名为$GLOBALS[index]的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。如:

PHP static关键词

通常在函数完成/执行后,会删除所有的变量。不过,有时我需要不删除某个局部变量,可以在函数内首次声明变量时使用static关键词。

PHP echo和print语句

  • echo 能够输出一个以上的字符串;
  • print 只能输出一个字符串,并始终返回1。

PHP数据类型

var_dump() 返回变量的数据类型和值。

PHP数组的数据类型:

PHP字符串函数

strlen():返回字符串的长度。

str_word_count() : 对字符串中的 单词进行计数。

strrev() : 反转字符串。

strpos() :用于检索字符串内指定的字符或者文本,如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。

str_replace() 函数用一些字符串替换字符串中的另一些字符。

PHP常量

常量名称前面没有$符号,与变量不同,常量贯穿整个脚本是自动全局的。

如需设置常量,请使用 define() 函数 – 它使用三个参数:

  1. 首个参数定义常量的名称
  2. 第二个参数定义常量的值
  3. 可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。

PHP字符串运算符

PHP比较运算符

PHP比较运算符用于比较两个值(数字或者字符串):

PHP数组运算符

PHP foreach循环

foreach循环只适用于数组,并用于便利数组中的每一个键/值对。

每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。

PHP函数

函数名对大小写不敏感。

PHP数组

在 PHP 中,有三种数组类型:

  • 索引数组 – 带有数字索引的数组

  • 关联数组 – 带有指定键的数组

  • 多维数组 – 包含一个或多个数组的数组

count()函数用于返回数组的长度。

PHP中数组的排序函数

  • sort() – 以升序对数组排序
  • rsort() – 以降序对数组排序
  • asort() – 根据值,以升序对关联数组进行排序
  • ksort() – 根据键,以升序对关联数组进行排序
  • arsort() – 根据值,以降序对关联数组进行排序
  • krsort() – 根据键,以降序对关联数组进行排序

PHP全局变量——超全局变量

超全局变量在PHP4.1.0中引入,是在全部作用域中始终可用的内置变量。在函数或方法中无需执行 global $variable; 就可以访问它们。https://www.w3school.com.cn/php/php_superglobals.asp

  • $GLOBALS

$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。

PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

  • $_SERVER 保存关于报头、路径和脚本位置的信息。

  • $_REQUEST 用于收集 HTML 表单提交的数据。

  • $_POST 广泛用于收集提交 method=”post” 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。

  • $_GET 可用于收集提交 HTML 表单 (method=”get”) 之后的表单数据; 也可以收集 URL 中的发送的数据。

  • $_FILES

  • $_ENV

  • $_COOKIE

  • $_SESSION

PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)。

GET vs. POST

GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, …))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。

GET 和 POST 被视作 $_GET 和 $_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域 – 无需任何特殊代码,您能够从任何函数、类或文件访问它们。

$_GET 是通过 URL 参数传递到当前脚本的变量数组。

$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。

何时使用 GET?

通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大约 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。

GET 可用于发送非敏感的数据。

何时使用 POST?

通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制

此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。

不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。

什么是 $_SERVER[“PHP_SELF”] 变量?

$_SERVER[“PHP_SELF”] 是一种超全局变量,它返回当前执行脚本的文件名。该变量能够被黑客利用进行XSS攻击。

因此,$_SERVER[“PHP_SELF”] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。

什么是 htmlspecialchars() 函数?

htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。

在用户提交该表单时,我们还要做两件事:

  1. (通过 PHP trim() 函数)去除用户输入数据中不必要的字符(多余的空格、制表符、换行)
  2. (通过 PHP stripslashes() 函数)删除用户输入数据中的反斜杠(\)

我们可以创建一个test_input() 函数,用于检查每个 $_POST 变量

preg_match() 函数

检索字符串的模式,如果模式存在则返回 true,否则返回 false。例如检查输入的字段是否包含字母和空格。

以下的代码用于验证URL:

PHP ——如何在用户提交表单后保留输入字段中的值

(PHP基础教程和PHP表单部分到此结束!!!)