PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
PHP 是免费的,并且使用非常广泛。同时,对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高效率的选项。
PHP 函数的完整参考手册:
Array 函数
Calendar 函数
cURL 函数
Date 函数
Directory 函数
Error 函数
Filesystem 函数
Filter 函数
FTP 函数
HTTP 函数
LibXML 函数
Mail 函数
Math 函数
Misc 函数
MySQLi 函数
SimpleXML 函数
String 函数
XML Parser 函数
Zip 函数
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 简介
PHP 是服务器端脚本语言。
。。。。。。。。。。。。
PHP 是什么?
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
PHP 脚本在服务器上执行。
PHP 可免费下载使用。
PHP 对初学者而言简单易学。
PHP 也为专业的程序员提供了许多先进的功能。
。。。。。。。。。。。。
PHP 文件是什么?
PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
PHP 文件的默认文件扩展名是 ".php"
。。。。。。。。。。。。
PHP 能做什么?
PHP 可以生成动态页面内容
PHP 可以创建、打开、读取、写入、关闭服务器上的文件
PHP 可以收集表单数据
PHP 可以发送和接收 cookies
PHP 可以添加、删除、修改您的数据库中的数据
PHP 可以限制用户访问您的网站上的一些页面
PHP 可以加密数据
通过 PHP,您不再限于输出 HTML。您可以输出图像、PDF 文件,甚至 Flash 电影。您还可以输出任意的文本,比如 XHTML 和 XML。
。。。。。。。。。。。。
为什么使用 PHP?
PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等)
PHP 提供了广泛的数据库支持
PHP 是免费的,可从官方的 PHP 资源下载它: www.php.net
PHP 易于学习,并可高效地运行在服务器端
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 安装
您需要做什么?
为了开始使用 PHP,您可以:
找一个支持 PHP 和 MySQL 的 Web 主机
在您自己的 PC 机上安装 Web 服务器,然后安装 PHP 和 MySQL
。。。。。。。。。。。
使用支持 PHP 的 Web 主机
如果您的服务器支持 PHP,那么您不需要做任何事情。
只要在您的 web 目录中创建 .php 文件即可,服务器将自动为您解析这些文件。
您不需要编译任何软件,或安装额外的工具。
由于 PHP 是免费的,大多数的 Web 主机都提供对 PHP 的支持。
。。。。。。。。。。。
在您自己的 PC 机上建立 PHP
然而,如果您的服务器不支持 PHP,您必须:
安装 Web 服务器
安装 PHP
安装数据库,比如 MySQL
官方 PHP 网站(PHP.net)有 PHP 的安装说明: http://php.net/manual/en/install.php
。。。。。。。。。。。
PHP 服务器组件
对于初学者建议使用集成的服务器组件,它已经包含了 PHP、Apache、Mysql 等服务,免去了开发人员将时间花费在繁琐的配置环境过程。
。。。。。。。。。。。
WampServer(服务器)
Windows 系统可以使用 WampServer,下载地址:http://www.wampserver.com/,支持32位和64位系统,根据自己的系统选择版本。
WampServer 安装也简单,你只需要一直点击 "Next" 就可以完成安装了。
XAMPP(集成服务器)
XAMPP 支持 Mac OS 和 Windows 系统,下载地址:https://www.apachefriends.org/zh_cn/index.html。
。。。。。。。。。。。
IDE (Integrated Development Environment,集成开发环境)
Eclipse for PHP(免费)
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台(如果未安装JDK,则需要先 下载 JDK 安装)。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
支持 Windows、Linux 和 Mac OS 平台。
Eclipse for PHP 官方下载地址:http://www.eclipse.org/downloads/packages/eclipse-php-developers/heliosr
PhpStorm(收费)
PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。
PhpStorm 非常适合于PHP开发人员及前端工程师。提供诸于:智能HTML/CSS/JavaScript/PHP编辑、代码质量分析、版本控制集成(SVN、GIT)、调试和测试等功能。
支持 Windows、Linux 和 Mac OS 平台。
PhpStorm 官方下载地址:http://www.jetbrains.com/phpstorm/download/
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 语法
PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。
http:/ /www.iis7.com/b/ssyqdq/
。。。。。。。。。。。。。。
基本的 PHP 语法
PHP 脚本可以放在文档中的任何位置。
PHP 脚本以 结束,语法:
PHP 文件的默认文件扩展名是 ".php"。
PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。
PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 变量。变量是用于存储信息的"容器"
。。。。。。。。。。。。
与代数类似
x=5
y=6
z=x+y
在代数中,我们使用字母(如 x),并给它赋值(如 5)。
从上面的表达式 z=x+y ,我们可以计算出 z 的值为 11。
在 PHP 中,这些字母被称为变量。
变量是用于存储数据的容器。
。。。。。。。。。。。。
PHP 变量
与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。
变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。
PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
PHP 语句和 PHP 变量都是区分大小写的。
。。。。。。。。。。。。
创建(声明)PHP 变量
PHP 没有声明变量的命令。
变量在您第一次赋值给它的时候被创建
注释:当您赋一个文本值给变量时,请在文本值两侧加上引号。
。。。。。。。。。。。。
PHP 是一门弱类型语言
不必向 PHP 声明该变量的数据类型。
PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
。。。。。。。。。。。。
PHP 变量作用域
变量的作用域是脚本中变量可被引用/使用的部分。
PHP 有四种不同的变量作用域:
local
global(全局变量)
static
parameter
。。。。。。。。。。。。
局部和全局作用域
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问
你可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。
。。。。。。。。。。。
PHP global 关键字
global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字
PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
。。。。。。。。。。。
Static 作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字
然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注释:该变量仍然是函数的局部变量。
。。。。。。。。。。。
参数作用域
参数是通过调用代码将值传递给函数的局部变量。
参数是在参数列表中声明的,作为函数声明的一部分
。。。。。。。。。。。
1, 定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾。
2、函数内定义的变量就是局部变量,它的作用域为函数定义范围内。
3、函数之间存在作用域互不影响。
4、函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组
在 php 中函数是有独立的作用域,所以局部变量会覆盖全局变量,即使局部变量中并定义没有全局变量相同的变量,也会被覆盖。
要想在函数中直接使用全局变量可以通过 global 关键字声明或者通过 php 中自定义的 $GLOBALS 数组获取
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 5 echo 和 print 语句
在 PHP 中有两个基本的输出方式: echo 和 print。
。。。。。。。。。。。。。。
PHP echo 和 print 语句
echo 和 print 区别:
echo - 可以输出一个或多个字符串
print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
。。。。。。。。。。。。
PHP echo 语句
echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。
显示字符串。字符串可以包含 HTML 标签
显示变量,用双引号
。。。。。。。。。。。。
PHP print 语句
print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。
显示字符串,字符串可以包含 HTML 标签
显示变量,用双引号
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP (文件结束符)EOF(heredoc,语法结构) 使用说明
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法。
使用概述:
| x 取反 x 取反 . 并置 连接两个字符串 HP7+ 版本新增整除运算符 intdiv() 。。。。。。。。。 PHP 赋值运算符 在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 5。 运算符 等同于 描述 x = y x = y 左操作数被设置为右侧表达式的值 x += y x = x + y 加 x -= y x = x - y 减 x = y x = x y 乘 x /= y x = x / y 除 x %= y x = x % y 模(除法的余数) a .= b a = a . b 连接两个字符串 。。。。。。。。。 PHP 递增/递减运算符 运算符 名称 描述 ++ x 预递增 x 加 1,然后返回 x x ++ 后递增 返回 x,然后 x 加 1(等于本身) -- x 预递减 x 减 1,然后返回 x x -- 后递减 返回 x,然后 x 减 1(等于本身) 。。。。。。。。。 PHP 比较运算符 比较操作符可以让您比较两个值: 运算符 名称 描述 实例 x == y 等于 如果 x 等于 y,则返回 true 5==8 返回 false x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回 true 5==="5" 返回 false x != y 不等于 如果 x 不等于 y,则返回 true 5!=8 返回 true x <> y 不等于 如果 x 不等于 y,则返回 true 5<>8 返回 true x !== y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!=="5" 返回 true x > y 大于 如果 x 大于 y,则返回 true 5>8 返回 false x < y 小于 如果 x 小于 y,则返回 true 5<8 返回 true x >= y 大于等于 如果 x 大于或者等于 y,则返回 true 5>=8 返回 false x <= y 小于等于 如果 x 小于或者等于 y,则返回 true 5<=8 返回 true 。。。。。。。。。。 PHP 逻辑运算符 运算符 名称 描述 实例 x and y 与 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 and y > 1) 返回 true (两边条件都成立时) x or y 或 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x==6 or y==5) 返回 true (两边条件有一个成立时) x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true x=6 y=3 (x==6 xor y==3) 返回 false (两边条件都不成立时) x && y 与 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 && y > 1) 返回 true (两边条件都成立时) x |
y 或 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x==5 | y==5) 返回 false (两边条件有一个成立时) ! x 非 如果 x 不为 true,则返回 true x=6 y=3 !(x==y) 返回 true (取反相值) 。。。。。。。。。。 PHP 数组运算符 运算符 名称 描述 x + y 集合 x 和 y 的集合 x == y 相等 如果 x 和 y 具有相同的键/值对,则返回 true x === y 恒等 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true x != y 不相等 如果 x 不等于 y,则返回 true x <> y 不相等 如果 x 不等于 y,则返回 true x !== y 不恒等 如果 x 不等于 y,则返回 true 。。。。。。。。。。 三元运算符 另一个条件运算符是"?:"(或三元)运算符 。 语法格式:(expr1) ? (expr2) : (expr3) 对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。 自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。 注意:PHP_EOL 是一个换行符,兼容更大平台。 在 PHP7+ 版本多了一个 NULL 合并运算符 ?? 。。。。。。。。。。 组合比较符 "<=>" 。。。。。。。。。。 运算符优先级 下面按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。 说明:左 = 从左到右,右 = 从右到左。 结合方向 运算符 附加信息 无 clone new clone 和 new 左 [ array() 右 ++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减 无 instanceof 类型 右 ! 逻辑运算符 左 * / % 算术运算符 左 + – . 算术运算符和字符串运算符 左 << >> 位运算符 无 == != === !== <> 比较运算符 左 & 位运算符和引用 左 ^ 位运算符 左 |
位运算符 左 && 逻辑运算符 左 |
逻辑运算符 左 ? : 三元运算符 右 = += -= *= /= .= %= &= |
= ^= <<= >>= => 赋值运算符 左 and 逻辑运算符 左 xor 逻辑运算符 左 or 逻辑运算符 左 , 多处用到 运算符优先级中,or 和 |
,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。 。。。。。。。。。。。 括号的使用 我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。 。。。。。。。。。。。 组合比较运算符又名太空船运算符,组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。 语法是这样的: $c = $a <=> $b; 这句代码的意思是: 如果 $a > $b, $c 的值为 1 如果 $a == $b, $c 的值为 0 如果 $a < $b, $c 的值为-1 运算符的优先级口诀:括(号)、单(操作数)、算(术)、移(位)、关(系);位(运算符)、逻(辑)、条(件)、赋(值)、逗(号)。 |
|---|
PHP If...Else 语句
条件语句用于根据不同条件执行不同动作。
。。。。。。。。。。。
PHP 条件语句
当您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。
在 PHP 中,提供了下列条件语句:
if 语句 - 在条件成立时执行代码
if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
switch 语句 - 在若干条件之一成立时执行一个代码块
。。。。。。。。。。
PHP - if 语句
if 语句用于仅当指定条件成立时执行代码。
语法:
if (条件)
{
条件成立时要执行的代码;
}
。。。。。。。。。。
PHP - if...else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if....else 语句。
语法:
if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}
。。。。。。。。。。
PHP - if...elseif....else 语句
在若干条件之一成立时执行一个代码块,请使用 if....elseif...else 语句。.
语法:
if (条件)
{
if 条件成立时执行的代码;
}
else if (条件)
{
else if 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}
。。。。。。。。。
elseif 和 else if 完全同效果,elseif 是 PHP 为 else if 专门做到容错版。更准确更严格到写法为后者: else if
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP Switch 语句
switch 语句用于根据多个不同条件执行不同动作。
如果您希望有选择地执行若干代码块之一,请使用 switch 语句。
语法:
switch (n)
{
case label1:
如果 n=label1,此处代码将执行;
break;
case label2:
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>
工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。
在 switch 语句中漏写 break, 可能会使你的输出在你意料之外。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 数组
数组能够在单个变量中存储多个值
。。。。。。。。。。。。
数组是什么?
数组是一个能在单个变量中存储多个值的特殊变量。
如果您有一个项目清单(例如:车名字的清单),将其存储到单个变量中,如下所示:
$cars1="Volvo";
$cars2="BMW";
$cars3="Toyota";
然而,如果您想要遍历数组并找出特定的一个呢?如果数组的项不只 3 个而是 300 个呢?
解决办法是创建一个数组!
数组可以在单个变量中存储多个值,并且您可以根据键访问其中的值。
。。。。。。。。。。。。
在 PHP 中创建数组
在 PHP 中,array() 函数用于创建数组:
array();
在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组
。。。。。。。。。。。。
PHP 数值数组
这里有两种创建数值数组的方法:
自动分配 ID 键(ID 键总是从 0 开始):
$cars=array("Volvo","BMW","Toyota");
人工分配 ID 键:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";
。。。。。。。。。。。。
获取数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素的数量)
。。。。。。。。。。。。
遍历数值数组
遍历并打印数值数组中的所有值,您可以使用 for 循环
。。。。。。。。。。。。
PHP 关联数组(键和值)
关联数组是使用您分配给数组的指定的键的数组。
这里有两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
。。。。。。。。。。。。。
遍历关联数组
遍历并打印关联数组中的所有值,您可以使用 foreach 循环
声明两个变量,一个装属性,一个装值
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 数组排序
数组中的元素可以按字母或数字顺序进行降序或升序排列。
。。。。。。。。。。
PHP - 数组排序函数
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
。。。。。。。。。。
sort() - 对数组进行升序排列,按数组中的元素字母升序排列。数字数组就按数字的大小升序排列。
。。。。。。。。。。
rsort() - 对数组进行降序排列,按数组中的元素字母降序排列。数字数组就按数字的大小降序排列。
。。。。。。。。。。
asort() - 根据数组的值,对数组进行升序排列
ksort() - 根据数组的键,对数组进行升序排列
。。。。。。。。。。
arsort() - 根据数组的值,对数组进行降序排列
krsort() - 根据数组的键,对数组进行降序排列
。。。。。。。。。。
以上排序都用print_r输出。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 超级全局变量
超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用。
。。。。。。。。。。
PHP 超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
PHP 超级全局变量列表:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
。。。。。。。。。
PHP $GLOBALS
$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
。。。。。。。。
PHP $_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
下表列出了所有 $_SERVER 变量中的重要元素:
$_SERVER['PHP_SELF']
当前执行脚本的文件名,与 document root 有关。例如,在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将得到 /test.php/foo.bar。FILE 常量包含当前(例如包含)文件的完整路径和文件名。 从 PHP 4.3.0 版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用。
$_SERVER['GATEWAY_INTERFACE']:服务器使用的 CGI 规范的版本;例如,"CGI/1.1"。
$_SERVER['SERVER_ADDR']:当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME']:当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。(如: www.runoob.com)
$_SERVER['SERVER_SOFTWARE']:服务器标识字符串,在响应请求时的头信息中给出。 (如:Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL']:请求页面时通信协议的名称和版本。例如,"HTTP/1.0"。
$_SERVER['REQUEST_METHOD']:访问页面使用的请求方法;例如,"GET", "HEAD","POST","PUT"。
$_SERVER['REQUEST_TIME']:请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496)
$_SERVER['QUERY_STRING']:query string(查询字符串),如果有的话,通过它进行页面访问。
$_SERVER['HTTP_ACCEPT']:当前请求头中 Accept: 项的内容,如果存在的话。
$_SERVER['HTTP_ACCEPT_CHARSET']:当前请求头中 Accept-Charset: 项的内容,如果存在的话。例如:"iso-8859-1,*,utf-8"。
$_SERVER['HTTP_HOST']:当前请求头中 Host: 项的内容,如果存在的话。
$_SERVER['HTTP_REFERER']
引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。)
$_SERVER['HTTPS']:如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值。
$_SERVER['REMOTE_ADDR']:浏览当前页面的用户的 IP 地址。
$_SERVER['REMOTE_HOST']:浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。
$_SERVER['REMOTE_PORT']:用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER['SCRIPT_FILENAME']:当前执行脚本的绝对路径。
$_SERVER['SERVER_ADMIN']:该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。(如:someone@runoob.com)
$_SERVER['SERVER_PORT']:Web 服务器使用的端口。默认值为 "80"。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
$_SERVER['SERVER_SIGNATURE']:包含了服务器版本和虚拟主机名的字符串。
$_SERVER['PATH_TRANSLATED']:当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。
$_SERVER['SCRIPT_NAME']:包含当前脚本的路径。这在页面需要指向自己时非常有用。FILE 常量包含当前脚本(例如包含文件)的完整路径和文件名。
$_SERVER['SCRIPT_URI']:URI 用来指定要访问的页面。例如 "/index.html"。
。。。。。。。。
PHP $_REQUEST
PHP $_REQUEST 用于收集HTML表单提交的数据。
。。。。。。。。
PHP $_POST
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
。。。。。。。。
PHP $_GET
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
$_GET 也可以收集URL中发送的数据。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 循环 - While 循环
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。
。。。。。。。。。。
PHP 循环
在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。
在 PHP 中,提供了下列循环语句:
while - 只要指定的条件成立,则循环执行代码块
do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
for - 循环执行代码块指定的次数
foreach - 根据数组中每个元素来循环代码块
。。。。。。。。。
while 循环
while 循环将重复执行代码块,直到指定的条件不成立。
语法:
while (条件)
{
要执行的代码;
}
例子:
下面的实例首先设置变量 i 的值为 1 ($i=1;)。
然后,只要 i 小于或者等于 5,while 循环将继续运行。循环每运行一次,i 就会递增 1:
$i=1;
while($i<=5)
{
echo "The number is " . $i . "
";
$i++;
}
?>
输出:
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5
。。。。。。。。。。。。
do...while 语句
do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
语法:
do
{
要执行的代码;
}
while (条件);
例子:
下面的实例首先设置变量 i 的值为 1 ($i=1;)。
然后,开始 do...while 循环。循环将变量 i 的值递增 1,然后输出。先检查条件(i 小于或者等于 5),只要 i 小于或者等于 5,循环将继续运行:
$i=1;
do
{
$i++;
echo "The number is " . $i . "
";
}
while ($i<=5);
?>
输出:
The number is 2
The number is 3
The number is 4
The number is 5
The number is 6
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 循环 - For 循环
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。
。。。。。。。。。。。
for 循环
for 循环用于您预先知道脚本需要运行的次数的情况。
语法
for (初始值; 条件; 增量)
{
要执行的代码;
}
参数:
初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。
注释:上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
例子:
下面的实例定义一个初始值为 i=1 的循环。只要变量 i 小于或者等于 5,循环将继续运行。循环每运行一次,变量 i 就会递增 1:
for ($i=1; $i<=5; $i++)
{
echo "The number is " . $i . "
";
}
?>
输出:
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5
。。。。。。。。。。
foreach 循环
foreach 循环用于遍历数组。
语法:
foreach ($array as $value)
{
要执行代码;
}
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 函数
PHP 的真正威力源自于它的函数。
在 PHP 中,提供了超过 1000 个内建的函数。
。。。。。。。。。
PHP 函数
我们将如何创建自己的函数。
如要在页面加载时执行脚本,您可以把它放到函数里。
函数是通过调用函数来执行的。
你可以在页面的任何位置调用函数。
。。。。。。。。。
创建 PHP 函数
函数是通过调用函数来执行的。
语法:
function functionName()
{
// 要执行的代码
}
?>
PHP 函数准则:
函数的名称应该提示出它的功能
函数名称以字母或下划线开头(不能以数字开头)
。。。。。。。。。
PHP 函数 - 添加参数
为了给函数添加更多的功能,我们可以添加参数。参数类似变量。
参数就在函数名称后面有一个括号内指定。
。。。。。。。。。
PHP 函数 - 返回值
如需让函数返回一个值,请使用 return 语句。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
例如 LINE 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写
。。。。。。。。。。
LINE
文件中的当前行号。
。。。。。。。。。。
FILE
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
自 PHP 4.0.2 起,FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
。。。。。。。。。。
DIR
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)
。。。。。。。。。。
FUNCTION
函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
。。。。。。。。。。
CLASS
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。
在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 CLASS 对 trait 也起作用。当用在 trait 方法中时,CLASS 是调用 trait 方法的类的名字。
。。。。。。。。。。
TRAIT
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。
Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。
。。。。。。。。。。
METHOD
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
。。。。。。。。。。
NAMESPACE
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 命名空间(namespace)
PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物。 不过在PHP当中还是有着相当重要的意义。
PHP 命名空间可以解决以下两类问题:
const CONNECT_OK = 1;
class Connection { / ... / }
function connect() { / ... / }
}
namespace { // 全局代码
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。
declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
namespace MyProject {
const CONNECT_OK = 1;
class Connection { / ... / }
function connect() { / ... / }
}
namespace { // 全局代码
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
。。。。。。。。。。。。
子命名空间
与目录和文件的关系很像,PHP 命名空间也允许指定层次化的命名空间的名称。因此,命名空间的名字可以使用分层次的方式定义:
namespace MyProject\Sub\Level; //声明分层次的单个命名空间
const CONNECT_OK = 1;
class Connection { / ... / }
function Connect() { / ... / }
?>
上面的例子创建了常量 MyProject\Sub\Level\CONNECT_OK,类 MyProject\Sub\Level\Connection 和函数 MyProject\Sub\Level\Connect。
。。。。。。。。。。。
命名空间使用
PHP 命名空间中的类名可以通过三种方式引用:
完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo。
注意:访问任意全局类、函数或常量,都可以使用完全限定名称
。。。。。。。。。。。。
命名空间和动态语言特征
PHP 命名空间的实现受到其语言自身的动态特征的影响。
必须使用完全限定名称(包括命名空间前缀的类名称)。注意因为在动态的类名称、函数名称或常量名称中,限定名称和完全限定名称没有区别,因此其前导的反斜杠是不必要的。
。。。。。。。。。。。。
namespace关键字和NAMESPACE常量
PHP支持两种抽象的访问当前命名空间内部元素的方法,NAMESPACE 魔术常量和namespace关键字。
常量NAMESPACE的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。
NAMESPACE 示例, 在命名空间中的代码
关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。
namespace操作符,命名空间中的代码
。。。。。。。。。。。。
使用命名空间:别名/导入
PHP 命名空间支持 有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名。
在PHP中,别名是通过操作符 use 来实现的.
。。。。。。。。。。。
使用命名空间:后备全局函数/常量
在一个命名空间中,当 PHP 遇到一个非限定的类、函数或常量名称时,它使用不同的优先策略来解析该名称。类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定名称
1、在命名空间中访问全局类对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP 会退而使用全局空间中的函数或常量。
2、 命名空间中后备的全局函数/常量
。。。。。。。。。。。
全局空间
如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。
。。。。。。。。。。。
命名空间的顺序
自从有了命名空间之后,最容易出错的该是使用类的时候,这个类的寻找路径是什么样的了。
为了引用全局命名空间中的全局类,必须使用完全限定名称 new \C()。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 面向对象
在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。
在现实世界里我们所面对的事情都是对象,如计算机、电视机、自行车等。
对象的主要三个特性:
对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。
对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。
对象的表示:对象的表示就相当于×××,具体区分在相同的行为与状态下有什么不同。
比如 Animal(动物) 是一个抽象类,我们可以具体到一只狗跟一只羊,而狗跟羊就是具体的对象,他们有颜色属性,可以写,可以跑等行为状态。
。。。。。。。。。。。。。
面向对象内容
类:定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
对象:是类的实例。
成员变量:定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。
成员函数:定义在类的内部,可用于访问对象的数据。
继承: 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
父类:一个类被其他类继承,可将该类称为父类,或基类,或超类。
子类:一个类继承其他类称为子类,也可称为派生类。
多态:多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
重载:简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
抽象性: 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
封装:封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
构造函数:主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
析构函数:析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
。。。。。。。。。。。。
PHP 类定义
PHP 定义类通常语法格式如下:
class phpClass {
var $var1;
var $var2 = "constant string";
function myfunc ($arg1, $arg2) {
[..]
}
[..]
}
?>
解析如下:
类使用 class 关键字后加上类名定义。
类名后的一对大括号({})内可以定义变量和方法。
类的变量使用 var 来声明, 变量也可以初始化值。
函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。
。。。。。。。。。。。。。
PHP 中创建对象
类创建后,我们可以使用 new 运算符来实例化该类的对象:
$runoob = new Site;
$taobao = new Site;
$google = new Site;
以上代码我们创建了三个对象,三个对象各自都是独立的
。。。。。。。。。。。。。
调用成员方法
在实例化对象后,我们可以使用该对象调用成员方法,该对象的成员方法只能操作该对象的成员变量
。。。。。。。。。。。。。
PHP 构造函数
构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用。
PHP 5 允许开发者在一个类中定义一个方法作为构造函数,语法格式如右所示:void construct ([ mixed $args [, $... ]] )
。。。。。。。。。。。。。
析构函数
析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。
PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,其语法格式如右所示:void destruct ( void )
。。。。。。。。。。。。。
继承
PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承,格式如下:
class Child extends Parent {
// 代码部分
}
。。。。。。。。。。。。
方法重写
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
。。。。。。。。。。。。
访问控制
PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
public(公有):公有的类成员可以在任何地方被访问。
protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
private(私有):私有的类成员则只能被其定义所在的类访问。
属性的访问控制
类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。
方法的访问控制
类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。
。。。。。。。。。。。
接口
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
。。。。。。。。。。。
常量
可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。
常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。
自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。
。。。。。。。。。。。
抽象类
任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
定义为抽象的类不能被实例化。
被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。
。。。。。。。。。。。。
Static 关键字
声明类属性或方法为 static(静态),就可以不实例化类而直接访问。
静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
静态属性不可以由对象通过 -> 操作符来访问。
自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。
。。。。。。。。。。。。
Final 关键字
PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
。。。。。。。。。。。。
调用父类构造方法
PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 表单和用户输入
PHP 中的 $_GET 和 $_POST 变量用于检索表单中的信息,比如用户输入。
。。。。。。。。。。。。
PHP 表单处理,有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。
。。。。。。。。。。。。
PHP 获取下拉菜单的数据
PHP 下拉菜单单选
以下实例我们设置了下拉菜单三个选项,表单使用 GET 方式获取数据,action 属性值为空表示提交到当前脚本,我们可以通过 select 的 name 属性获取下拉菜单的值:
php_form_select.php 文件代码:
$q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
if($q) {
if($q =='RUNOOB') {
echo '菜鸟教程
http://www.runoob.com';
} else if($q =='GOOGLE') {
echo 'Google 搜索
http://www.google.com';
} else if($q =='TAOBAO') {
echo '淘宝
http://www.taobao.com';
}
} else {
?>
(大于) 成为 >
。。。。。。。。。。。。
PHP表单中需引起注重的地方?
$_SERVER["PHP_SELF"] 变量有可能会被×××使用!
当×××使用跨网站脚本的HTTP链接来×××时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。
XSS又叫 CSS (Cross-Site Script) ,跨站脚本×××。恶意×××者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
指定以下表单文件名为 "test_form.php":
| 使用PHP stripslashes()函数去除用户输入数据中的反斜杠 () 接下来让我们将这些过滤的函数写在一个我们自己定义的函数中,这样可以大大提高代码的复用性。 将函数命名为 test_input()。 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: PHP 表单 - 必需字段 字段 验证规则 名字 必需。 + 只能包含字母和空格 E-mail 必需。 + 必需包含一个有效的电子邮件地址(包含"@"和".") 网址 可选。 如果存在,它必需包含一个有效的URL 备注 可选。多行字段(文本域)。 性别 必需。必需选择一个。 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: PHP 表单 - 验证邮件和URL 现在我们来学如何验证 names(名称), e-mails(邮件), 和 URLs。 。。。。。。。。。。。。 PHP - 验证名称 以下代码将通过简单的方式来检测 name 字段是否包含字母和空格,如果 name 字段值不合法,将输出错误信息: $name = test_input($_POST["name"]); if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "只允许字母和空格"; } 。。。。。。。。。。。。 preg_match — 进行正则表达式匹配。 语法:int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] ) 在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。如果提供了 matches ,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。 。。。。。。。。。。。。 PHP - 验证邮件 以下代码将通过简单的方式来检测 e-mail 地址是否合法。如果 e-mail 地址不合法,将输出错误信息: $email = test_input($_POST["email"]); if (!preg_match("/([\w-]+\@[\w-]+.[\w-]+)/",$email)) { $emailErr = "非法邮箱格式"; } 。。。。。。。。。。。 PHP - 验证 URL 以下代码将检测URL地址是否合法 (以下正则表达式运行URL中含有破折号:"-"), 如果 URL 地址不合法,将输出错误信息: $website = test_input($_POST["website"]); if (!preg_match("/\b(?:(?:https? |
ftp):\/\/ | www.)[-a-z0-9+&@#\/%?=~_ | !:,.;]*[-a-z0-9+&@#\/%=~_ | ]/i",$website)) { $websiteErr = "非法的 URL 的地址"; } |
|---|
PHP $_GET 变量
在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。
。。。。。。。。。。。
何时使用 method="get"?
在 HTML 表单中使用 method="get" 时,所有的变量名和值都会显示在 URL 中。
注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!
然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。
注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP $_POST 变量
在 PHP 中,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。
。。。。。。。。。。。
$_POST 变量
预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。
。。。。。。。。。。。
何时使用 method="post"?
从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。
然而,由于变量不显示在 URL 中,所以无法把页面加入书签。
。。。。。。。。。。。
PHP $_REQUEST 变量
预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。
$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 多维数组
一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组
。。。。。。。。。
PHP - 多维数组
多维数组是包含一个或多个数组的数组。
在多维数组中,主数组中的每一个元素也可以是一个数组,子数组中的每一个元素也可以是一个数组。
。。。。。。。。。
输出方式其中的一种:
echo $#['#'][0] . '地址为:' . $#['#'][1];
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP date() 函数
PHP date() 函数用于格式化时间/日期。
。。。。。。。。。
PHP date() 函数
PHP date() 函数可把时间戳格式化为可读性更好的日期和时间。
Tip时间戳是一个字符序列,表示一定的事件发生的日期/时间。
语法:string date ( string $format [, int $timestamp ] )
参数 描述
format 必需。规定时间戳的格式。
timestamp 可选。规定时间戳。默认是当前的日期和时间。
。。。。。。。。。。
PHP Date() - 格式化日期
date() 函数的第一个必需参数 format 规定了如何格式化日期/时间。
这里列出了一些可用的字符:
d - 代表月中的天 (01 - 31)
m - 代表月 (01 - 12)
Y - 代表年 (四位数)
。。。。。。。。。。
format 字符 说明 返回值例子
日 --- ---
d 月份中的第几天,有前导零的 2 位数字 01 到 31
D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
j 月份中的第几天,没有前导零 1 到 31
l ("L"的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
z 年份中的第几天 0 到 365
星期 --- ---
W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
月 --- ---
F 月份,完整的文本格式,例如 January 或者 March January 到 December
m 数字表示的月份,有前导零 01 到 12
M 三个字母缩写表示的月份 Jan 到 Dec
n 数字表示的月份,没有前导零 1 到 12
t 给定月份所应有的天数 28 到 31
年 --- ---
L 是否为闰年 如果是闰年为 1,否则为 0
o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
Y 4 位数字完整表示的年份 例如:1999 或 2003
y 2 位数字表示的年份 例如:99 或 03
时间 --- ---
a 小写的上午和下午值 am 或 pm
A 大写的上午和下午值 AM 或 PM
B Swatch Internet 标准时 000 到 999
g 小时,12 小时格式,没有前导零 1 到 12
G 小时,24 小时格式,没有前导零 0 到 23
h 小时,12 小时格式,有前导零 01 到 12
H 小时,24 小时格式,有前导零 00 到 23
i 有前导零的分钟数 00 到 59>
s 秒数,有前导零 00 到 59>
u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 示例: 654321
时区 --- ---
e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
I 是否为夏令时 如果是夏令时为 1,否则为 0
O 与格林威治时间相差的小时数 例如:+0200
P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。
Z 时差偏移量的秒数.UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200
完整的日期/时间 --- ---
c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time()
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 包含文件
PHP include 和 require 语句
在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。
include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。
。。。。。。。。。。。
include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。
包含文件省去了大量的工作。这意味着您可以为所有网页创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可。
语法:
include 'filename';
或者
require 'filename';
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 文件处理
fopen() 函数用于在 PHP 中打开文件。
。。。。。。。。。
打开文件
fopen() 函数用于在 PHP 中打开文件。
此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:
$file=fopen("welcome.txt","r");
?>
文件可能通过下列模式来打开:
模式 描述
r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末尾写内容,来保持文件内容。
x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
注释:如果 fopen() 函数无法打开指定文件,则返回 0 (false)。
。。。。。。。。。。。
关闭文件
fclose() 函数用于关闭打开的文件:
$file = fopen("test.txt","r");
//执行一些代码
fclose($file);
?>
。。。。。。。。。。
检测文件末尾(EOF)
feof() 函数检测是否已到达文件末尾(EOF)。
在循环遍历未知长度的数据时,feof() 函数很有用。
注释:在 w 、a 和 x 模式下,您无法读取打开的文件!
if (feof($file)) echo "文件结尾";
。。。。。。。。。。
逐行读取文件
fgets() 函数用于从文件中逐行读取文件。
注释:在调用该函数之后,文件指针会移动到下一行。
。。。。。。。。。。
逐字符读取文件
fgetc() 函数用于从文件中逐字符地读取文件。
注释:在调用该函数之后,文件指针会移动到下一个字符。
。。。。。。。。。。
PHP对逗号分隔符文件(*.csv)的处理。
当如果你需要处理的数据比较少时可以使用csv文件(这是一类文本文件)存储数据更加便利。
注意:CSV文本编码必须和HTML的编码相同,否则用php写到HTML中,用户会看到乱码。也可以使用 iconv 转码函数进行转码。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PHP 文件上传
通过 PHP,可以把文件上传到服务器。
。。。。。。。。。。。。
创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
。。。。。。。。。。。。
HTML创建上传文件表单
| ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: PHP 数据库 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: PHP MySQL 简介 通过 PHP,您可以连接和操作数据库。 MySQL 是跟 PHP 配套使用的最流行的开源数据库系统。 。。。。。。。。。。。。。 MySQL 是什么? MySQL 是一种在 Web 上使用的数据库系统。 MySQL 是一种在服务器上运行的数据库系统。 MySQL 不管在小型还是大型应用程序中,都是理想的选择。 MySQL 是非常快速,可靠,且易于使用的。 MySQL 支持标准的 SQL。 MySQL 在一些平台上编译。 MySQL 是免费下载使用的。 MySQL 是由 Oracle 公司开发、发布和支持的。 MySQL 是以公司创始人 Monty Widenius's daughter: My 命名的。 MySQL 中的数据存储在表中。表格是一个相关数据的集合,它包含了列和行。 在分类存储信息时,数据库非常有用。一个公司的数据库可能拥有以下表: Employees Products Customers Orders 。。。。。。。。。 PHP + MySQL PHP 与 MySQL 结合是跨平台的。(您可以在 Windows 上开发,在 Unix 平台上应用。) 。。。。。。。。。 查询 查询是一种询问或请求。 通过 MySQL,我们可以向数据库查询具体的信息,并得到返回的记录集。 请看下面的查询(使用标准 SQL): mysql> set names utf8; mysql> SELECT name FROM websites; +---------------+ |
name | +---------------+ |
淘宝 | 菜鸟教程 | 微博 | stackoverflow | +---------------+ 6 rows in set (0.00 sec) 语句 set names utf8;用于设定数据库编码,让中文可以正常显示。 上面的查询选取了 "websites" 表中 "name" 列的所有数据。 。。。。。。。。。。。 下载 MySQL 数据库 如果您的 PHP 服务器没有 MySQL 数据库,可以在此免费下载 MySQL: http://www.mysql.com。 。。。。。。。。。。。 关于 MySQL 数据库的事实 关于 MySQL 的一点很棒的特性是,可以对它进行缩减,来支持嵌入的数据库应用程序。也许正因为如此,许多人认为 MySQL 仅仅能处理中小型的系统。 事实上,对于那些支持巨大数据和访问量的网站(比如 Friendster、Yahoo、Google),MySQL 是事实上的标准数据库。 |
|---|
PHP 连接 MySQL
PHP 5 及以上版本建议使用以下方式连接 MySQL :
MySQLi extension ("i" 意为 improved)
PDO (PHP Data Objects)
在 PHP 早期版本中我们使用 MySQL 扩展。但该扩展在 2012 年开始不建议使用。
。。。。。。。。。。。。。。。。
我是该用 MySQLi ,还是 PDO?
如果你需要一个简短的回答,即 "你习惯哪个就用哪个"。
MySQLi 和 PDO 有它们自己的优势:
PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。
所以,如果你的项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 使用 MySQLi, 如果不同数据库,你需要重新编写所有代码,包括查询。
两者都是面向对象, 但 MySQLi 还提供了 API 接口。
两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。
。。。。。。。。。。。。。。。。
MySQLi 和 PDO 连接 MySQL 实例
我们会使用以下三种方式来演示 PHP 操作 MySQL:
MySQLi (面向对象)
MySQLi (面向过程)
PDO
。。。。。。。。。。。。。。。
MySQLi 安装,Linux 和 Windows: 在 php5 mysql 包安装时 MySQLi 扩展多数情况下是自动安装的。可以通过 phpinfo() 查看是否安装成功
安装详细信息,请查看: http://php.net/manual/en/mysqli.installation.php
。。。。。。。。。。。。。。。
PDO 安装,可以通过 phpinfo() 查看是否安装成功
PDO 安装详细信息,请查看: http://php.net/manual/en/pdo.installation.php
。。。。。。。。。。。。。。。
连接 MySQL
在我们访问 MySQL 数据库前,我们需要先连接到数据库服务器
下一篇:PHP微职位学习心得分享