基本语法
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实体 < > 代表<> &的实体为&; 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()判断一个函数是否定义