'PHP基本语法'

基本语法

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
所有PHP脚本以<?php 开始,以?>结束

1
2
3
4
5
6
7
8
9
PHP文件默认拓展名为".php"
PHP 中两种在浏览器输出文本的基础指令:echo、print
(echo可以输出一个或多个字符串,print只能输出一个字符串返回值总为1。)
PHP中单行注释 // 注释内容
​ 多行注释 /*注释内容*/

能在html中写入php
php文件扩展名,一般情况下.php 结尾,但可以使用.phtml等
echo <script>alert('login error !')</script>;

PHP三种工作模式

工作模式 特点
1.CLI模式 命令行运行模式
2.CGI模式 通过CGI接口从HTTP服务器取得输入,然后把运行的结果通过CGI接口交给HTTP服务器,而HTTP服务器把结果送给浏览器
3.module模式 LAMP体系最常用的工作方式,php被编译为apache一个内置模块,
启动时加载,当有一个php请求过来时,直接在httpd进程完成php解释运行,将结果返回。
PHP的四种工作模式
相关文章

数据类型

1
2
3
4
5
6
7
8
9
10
11
12
13
1.布尔型(bool)
2.整型(int)
3.浮点型(float)
4.字符串(string) '' "" <<<EOF EOF
5.资源 (resource) STDIN STDOUT STDERROR 打开的文件,打开的网络连接

6.数组(array) 数组当中可以放任意的东西
7.对象(class) new person()
8.空值 NULL
9.使用var_dump()来查看类型var_dump();显示类型,数量,结果
客户端也可进行php输出
10. Echo和var_dump区别 :echo 输出的是变量和字符串;
var_dump 输出的是变量类型,变量长度和变量值;

变量

变量以$符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始

常量,一旦赋值不会改变,尽量大写
分为系统常量和自定义常量 变量名区分大小写
define()来定义自定义常量,使用时不需要$符

$a = ‘name’; 双$符
$$a = ‘zs’;
echo $name;
echo PHP_EOL; 当前系统的换行符

echo DIRECTORY_SEPARATOR; 代表/
DIRECTORY_SEPARATOR是一个返回跟操作系统相关的路径分隔符的php内置命令,在windows上返回/,
而在linux或者类unix上返回/,就是这么个区别,通常在定义包含文件路径或者上传保存目录的时候会用到

超全局变量

1
2
3
4
5
6
7
8
_FILE_代表当前文件的绝对路径
_DIR_代表被调用脚本所在文件夹
_FUNCTION_函数名
_LINE_行数
_CLASS_类名
PHP_VERSION ,php版本
PHP_OS 系统版本

转义

1
2
3
4
5
6
7
8
9
10
利用 \ 进行转义,使代码执行
<<<EOF EOF不需转义,不会被单双引号影响,EOF必须顶格,EOF中都可生效
' '单引号中放变量不生效 " " 双引号会执行里面的代码,变量等

字符转义
php中除了单引号,任何字符放入单引号内,将没有任何意义
php中除了 双引号,放入特殊字符,将会有特殊的意义
EOF中变量有意义,其他特殊字符,都没有意义

转义 ! 普通字符串变为特殊字符,特殊字符变为普通字符

运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
在PHP中,大部分都是在操作数据,运算符是用来处理这些数据的
运算符就是处理不同类型的数据
算术运算符,比较远算符,逻辑运算符,赋值运算符,错误控制,字符串操作

字符串+数字,只输出数字,省略字符串
两个true相加是2
字符串里的小数,转化出来还是小数
如 1+'3.14'

$a++ 先赋值再运算
++$a 先运算再赋值
123s
++$a 变为132t z的话又会返回a

null==false==0==[]==' '== 0E1 值相等 除了这六个其他都为true

字符串转数字,然后进行运算
'123fesff' ==> 123
'fsrg123' ==> 0
// 比较运算,因为本来比较运算就是用来对数字进行比较的,
所以遇到字符串和数字进行比较时,就是把字符串转成数字,然后再比较
// ==和===比较特殊,可以用来对两个字符串进行比较,还能比较布尔值,空,数组

与and && 只有全为true,则返回true
或or || 至少有一个为true,则返回true
非!x 不为true,则返回true
异或xor 仅一个为true,则返回true

三元及错误控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
三元运算符
()?():()
$username=isset($test)?$test:'nobody'
?前面放条件真假,如果是真执行条件:前面的代码或值
如果是假,执行:后面的代码或值
PHP5.3以上版本简写版
$username=$test? : 'nobody'

错误控制运算符
@符号 ,加@控制错误,使其不报错
@$_GET['id'];
@ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,
就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和 include 调用,常量,等等之前。
不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。

字符串操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
1,$str1 . $str2     .为拼接函数
常用字符串函数
2,addslashes()返回在于定义的字符前添加反斜杠的字符串 (防sql注入函数)
' " \ &
3,bin2hex()
echo bin2hex(str:'abcdef');
输出为616263646566
把ASCII字符的字符串转换为十六进制值
4,chr() 从指定ASCII字符转化为字符串
echo ehr(ascii:0x61);
转换为a 且一次只能转换一个
\n转换为0a
5,crypt() 函数返回DES,Blowfish,MD5算法函数,函数不可逆
每次运行后,hash值会改变
定义salt盐值,数据库存储密码时使用
6,md5() 利用哈希值计算16位字符串
7,explode() 把字符串打散为数组
$str6='https://www.baidu.com/s?wd=132';
$str7=explode(delimiter:'/' ,$str6);
var_dump($str7)
分隔字符串,为数组形式
8,implode()把数组转换回字符串形式
9,htmlentities() 把字符转换为html实体
< > 代表<>
&的实体为&amp;
10,htmlspecialchars()函数
把预定义的字符串转化为html实体 防止XSS
如 ' '' < > & (因为这几个有漏洞,会被攻击)
11,str_ireplace() 替换字符串中的一些字符(不区分大小写)
12,strchr()查找字符串在另一个字符串的第一次出现(区分大小写)
13,strcmp()比较两个字符串(区分大小写),相等的话输出0,二进制比价,不相等返回一个非0的值
14,strlen()返回字符串长度
strtoupper()把小写转换为大写
15,substr()返回字符串中的一部分
substr(string:"Hello world!",start:3, length:3);
从第三个下标开始,找第三个
负数默认从字符串末端返回
16,mb_substr() 专门取汉字长度 (一个汉字长度为3)
17,trim()移除字符串两侧的空白字符或其他预定义字符
默认情况下移除\0 NULL \t 制表符 \n 换行
\x0B 垂直制表符 \r 回车 " "空格

PHP的数据类型转换

1,强制转换:(int)$var (string)$var (float)$var (bool)$var
如 $a=‘123abs’
var_dump((int)$a)
得到输出为123
2,使用具体类型函数转换
intval() floatval() strval()
执行完代码后返回一个值
3,用于设置变量及其类型
settype($a ,int) 设置参数
全局使用,把类型转换走,之后用的所有$a将全是int型
4,isset()判断一个函数是否定义