文章目录
- 基础语法
- 单双引号的区别
- 前后端分离
- 数据类型
- PHP常量
- 函数
- 运算符
- 数组
- php的控制结构
- 自定义函数
- 数学函数和字符串函数
- 命令执行函数
-
-
-
- system函数
- passthru()函数
- exec()函数
- shell_exec()函数
- [popen 函数](#popen 函数)
-
-
- php的错误处理
- php操作mysql
PHP是一种广泛应用于Web开发的开源脚本语言,易学且功能丰富,可用于动态网站、Web应用、命令行脚本和桌面应用。其强大的数据库支持和社区资源使它成为开发者的重要工具。
基础语法
-
字符串拼接用"."
-
php能嵌套在html中
-
代码示例:
python<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>css样式优先级</title> </head> <body> <?php echo "唯有学习"; ?> <h1>使我快乐</h1> <?php echo date("Y-m-d H:i:s"); ?> </body> </html>
-
单双引号的区别
代码示例:
python
<?php
header("Content-Type: text/html; charset=utf-8");
$name = 'kobe';
echo '最喜欢的NBA球星是' . $name . '<br>'; // 变量不加符号,遇到字符串拼接,需要加.连接
echo '最喜欢的NBA球星是$name<br>'; // 单引号,不解析变量,原样输出
echo "最喜欢的NBA球星是$name<br>"; // 双引号,解析变量
?>
前后端分离
代码示例:
python
前端:text.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
//数据的提交都是用表单form提交的
//一个网站,大部分都是GET请求,只有通过form提交的才能发起POST请求
<form action="./login.php" method="get">//通过gei方法发送到login.php页面
用户名:<input type="text" name="username">
密码:<input type="text" name="password">
<input type="submit" value="提交">
</form>
</body>
</html>
========================================================
后端 login.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>网页后台</title>
<style>
div{
text-align:right;
}
</style>
</head>
<body>
<div>
<?php
$name=$_GET["username"];//接受text.html传来的数据
echo "欢迎".$name."回来^_^";
?>
</div>
</body>
</html>
数据类型
-
布尔类型
- 0/1
false
ortrue
-
整型
- 整数范围:
-99999
到+99999
- 整数范围:
-
浮点型
- 小数:
-1.9
,3.25
,3.00005
- 小数:
-
字符串
hello
-
数组
array
-
对象
object
-
资源类型
resource
-
NULL
空
PHP常量
php常量最好是全部大写
python
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT;
?>
函数
var_dump函数
用于输出结果,其返回带有结果的类型,例如string(5) "value"
count函数
用于计算数组元素的个数
print_r函数
打印函数
readfile()函数
读取文件,并返回文件的长度
file_get_contents()函数
读取文件,支持本地和远程文件url
file_put_contents()函数
保存文件
header函数
用于发送原始 HTTP 头到客户端。
代码示例:
python
header('Content-Type: text/html; charset=UTF-8');//设置内容类型
-----------------------------------------------------------------------
header('Location: http://www.example.com');//重定向
exit(); // 使用 exit() 终止脚本执行
-----------------------------------------------------------------------
//设置缓存控制
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1
header('Pragma: no-cache'); // HTTP 1.0
header('Expires: 0'); // Proxies
fopen函数
fopen
函数用于打开文件或 URL,以便进行读取或写入操作。
fread
函数
fread
函数用于从打开的文件中读取指定数量的字节。也可以创建文件(文件不存在时)
代码示例:
python
user.txt:
zhansan:123456
lisi:123
wangwu:12345
zhaoliu:123
--------------------------------
1.php
<?php
header("Content-Type: text/html; charset=utf-8");
$a = fopen('user.txt', 'r');
//$size = filesize('user.txt');
//print_r($size);
$b = fread($a, filesize('user.txt'));
echo $b;
fclose($a);
?>
结果:
zhansan:123456 lisi:123 wangwu:12345 zhaoliu:123
rename函数
将文件名重命名
用法:rename('原始名字','新名字')
copy()函数
将文件进行复制
用法:copy('原始路径','新路径')
unlink()函数
删除文件
file_exists()函数
判断文件是否存在,存在则返回true,不存在就返回false
运算符
运算符 | 名称 | 描述 | 实例 | 结果 |
---|---|---|---|---|
x + y | 加 | x 和 y 的和 | 2 + 2 | 4 |
x - y | 减 | x 和 y 的差 | 5 - 2 | 3 |
x * y | 乘 | x 和 y 的积 | 5 * 2 | 10 |
x / y | 除 | x 和 y 的商 | 15 / 5 | 3 |
x % y | 模 | x 除以 y 的余数 | 5 % 2<br>10 % 8<br>10 % 2 | 1<br>2<br>0 |
-x | 取负数 | x 取负数 | <?php $x = 2; echo -$x; ?> |
-2 |
a . b | 并置 | 连接两个字符串 | "Hi" . "Ha" | HiHa |
数组
普通数组
python
<?php
// 数组普通数组
$d = array('张三风', '李四', '王五', '赵六'); // 数组元素下标 0-3
echo count($d);
echo $d[3];
echo "<hr>";
?>
结果:4赵六
关联数组
python
<?php
// 数组关联数组
$a = array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round', 'name' => 'apple');
echo count($a);
echo $a["color"];
echo $a['name'];
?>
结果:4redapple
数组函数
array_keys() 返回数组的所有的键值
array_values() 返回数组的所有的值
array_rand() 从数组中随机抽取一个或多个元素,注意是键名
unset() 用于删除数组的键值
代码示例:
python
<?php
$name = array('zhangsan', 'lisi', 'wangwu', 'zhaoliu', 'zhangchuan');
echo $name[array_rand($name)];//随机收取键值
echo "<hr>";
print_r($name);
unset($name[2]);//删除键值
echo "<hr>";
print_r($name);
?>
结果:
zhangchuan
Array ( [0] => zhangsan [1] => lisi [2] => wangwu [3] => zhaoliu [4] => zhangchuan )
Array ( [0] => zhangsan [1] => lisi [3] => zhaoliu [4] => zhangchuan )
php的控制结构
if-elseif
-
代码示例:
python<?php // ABC 其他 Sjixiao='F'; if ($jixiao == 'A'){ echo "发放1.2倍薪资"; } elseif ($jixiao == 'B'){ echo "正常发放薪资"; } else if ($jixiao == ''){ echo "发放90%薪资"; } else { echo "发放80%薪资"; } ?> 结果:发放90%薪资
while
-
代码示例:
python<?php $i = 1; while ($i <= 10) { echo "今天天气真好"; echo "<br>"; $i++; echo "<br>"; } ?> 结果: 今天天气真好 今天天气真好 今天天气真好 今天天气真好 今天天气真好 今天天气真好 今天天气真好 今天天气真好 今天天气真好 今天天气真好
for结构
-
代码示例:
python<?php $d = array('张三风', '李四', '王五', '赵六'); $changdu = count($d) - 1; for ($i = 0; $i <= $changdu; $i++) { echo "中奖用户是:" . $d[$i]; echo "<br>"; } ?> 结果: 中奖用户是:张三风 中奖用户是:李四 中奖用户是:王五 中奖用户是:赵六
foreach遍历关联数组
-
代码示例:
python<?php $cars = array("特等奖" => "布加迪", "一等奖" => "捷豹", "二等奖" => "法拉利", "三等奖" => "玛莎拉蒂"); foreach ($cars as $key => $value) { echo $key . "是" . $value; echo "<hr>"; } ?> 结果: 特等奖是布加迪 一等奖是捷豹 二等奖是法拉利 三等奖是玛莎拉蒂
自定义函数
无传参函数
-
代码示例:
python<?php function func1(){ echo "hello,word"; } func1(); ?> 结果: hello,word
-
有传参函数
-
代码示例:
python<?php function qiuouhe($a) { $sum = 0; for($i = 1; $i <= $a; $i++) { $jieguo = $i % 2; if ($jieguo == 0) { $sum += $i; } } echo "1到$a 的所有偶数的和:$sum"; } qiuouhe(1000); ?> 结果: 1到1000 的所有偶数的和:250500
-
数学函数和字符串函数
参考文档:PHP Math 函数 (w3school.com.cn)
数学函数
-
代码示例:
pythonecho abs(-4.2); // 绝对值函数,返回 -4.2 的绝对值,即 4.2 echo "<br>"; echo ceil(9.01); // 向上取整函数,返回大于或等于 9.01 的最小整数,即 10 echo "<br>"; echo floor(9.999); // 向下取整函数,返回小于或等于 9.999 的最大整数,即 9 echo "<br>"; echo pow(2, 4); // 幂函数,返回 2 的 4 次方,即 16 echo "<br>"; echo round(1.95583, 2); // 四舍五入函数,返回 1.95583 保留两位小数的值,即 1.96 echo "<br>"; echo mt_rand(1, 9); // 生成一个介于 1 和 9 之间的伪随机整数 echo "<br>"; echo rand(1, 9); // 生成一个介于 1 和 9 之间的伪随机整数 echo "<br>"; echo round(pi(), 2); // 返回圆周率 π 保留两位小数的值,即 3.14 echo "<br>"; 结果: 4.2 10 9 16 1.96 9 8 3.14
字符串函数
###### trim函数
1. 去掉字符串**两端**的空格或其他指定符号
2. 代码示例:
```python
<?php
$str=" dms ";
echo trim($str," ");
?>
结果:dms
```
###### dirname函数
1. 代码示例:
```python
<?php
$pic_path = 'C:\Users\29691\Desktop\mysite\1.jpg';
echo dirname($pic_path);
echo "<br>";
echo dirname($pic_path) . '\2.jpg';
?>
结果:
C:\Users\29691\Desktop\mysite
C:\Users\29691\Desktop\mysite\2.jpg
```
##### str_pad函数
1. 代码示例:
```python
<?php
for ($i = 1; $i <= 999; $i++) {
echo str_pad($i, 3, '0', STR_PAD_LEFT);//左填充到3位数,默认是右填充
echo "<br>";
}
?>
结果:
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
...
```
##### explode函数
1. 代码示例:
```python
<?php
$a=str_repeat("今天天气真好",13);
$b=explode('.',$a);
var_dump($b);
?>
结果:
array(1) { [0]=> string(234) "今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好今天天气真好" }
```
命令执行函数
system函数
用法:system('whoami')
passthru()函数
用法: passthru('whoami')
exec()函数
该函数无回显,需要利用echo函数配合进行回显
python
<?php
echo exec('whoami');
?>
shell_exec()函数
同exec函数一样无回显,利用方式一样
代码示例:
python
<?php
// exec() 示例
$output = [];
exec('whoami', $output);
print_r($output); // 输出所有行
echo '<hr>';
// shell_exec() 示例
$output = shell_exec('whoami');
echo $output; // 输出完整内容
?>
结果:
Array ( [0] => cong\cong )
cong\cong
popen 函数
用于打开一个进程并建立一个管道,以便可以与该进程进行输入或输出的交互。(可执行命令)
代码示例:
python
$handle = popen('dir', 'r');
if ($handle) {
while (!feof($handle)) {
$line = fgets($handle);
echo $line; // 输出每一行
}
pclose($handle); // 关闭管道
} else {
echo "无法打开进程。";
}
php的错误处理
错误显示:
python
<?php
ini_set('display_errors', 1); // 显示错误,注意可能会有敏感文件路径泄露
?>
错误级别:
错误类型 | 说明 |
---|---|
E_ERROR | 错误,文件直接中断 |
E_WARNING | 警告,问题比较严重,但还是会继续向下运行 |
E_NOTICE | 提示,有些小问题不会影响到程序。常发生在项目未定义 |
E_PARSE | 编译时语法解析错误。解析错误仅仅分析器产生。 |
E_ALL | 所有的错误 |
E_STRICT | 启用PHP对代码的修改建议,以确保代码具有最佳的操作性和前向兼容性。 |
E_DEPRECATED | 启用后将会在未来版本中可能无法正常工作的代码给予警告。 |
php操作mysql
代码示例:
python
<?php
$link = mysqli_connect('127.0.0.1', 'root', 'password', 'pikachu');
var_dump($link);
echo '<hr>';
$sql = 'SELECT * FROM users;';
$result = mysqli_query($link, $sql);
var_dump($result);
echo '<hr>';
while ($row = mysqli_fetch_array($result)) {
print_r($row);
}
echo '<hr>';
?>
解读:
1. mysqli_connect函数用于与数据库建立连接
2. mysqli_query函数用于执行数据库操作,用法:mysqli_query('数据库链接','SELECT、INSERT、UPDATE、DELETE 等数据库操作')
3. mysqli_query函数只能返回一个结果集,mysqli_fetch_array函数只能获取一行数据,故通过while循环来获取大量数据
结果:
object(mysqli)#1 (19) { ["affected_rows"]=> int(0) ["client_info"]=> string(79) "mysqlnd 5.0.12-dev - 20150407 - $Id: 7cc7cc96e675f6d72e5cf0f267f48e167c2abb23 $" ["client_version"]=> int(50012) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(0) ["host_info"]=> string(20) "127.0.0.1 via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(6) "5.7.26" ["server_version"]=> int(50726) ["stat"]=> string(135) "Uptime: 37925 Threads: 1 Questions: 383 Slow queries: 0 Opens: 125 Flush tables: 1 Open tables: 28 Queries per second avg: 0.010" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(53) ["warning_count"]=> int(0) }
--------------------------------------------------------------------------------
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(4) ["lengths"]=> NULL ["num_rows"]=> int(3) ["type"]=> int(0) }
--------------------------------------------------------------------------------
Array ( [0] => 1 [id] => 1 [1] => admin [username] => admin [2] => e10adc3949ba59abbe56e057f20f883e [password] => e10adc3949ba59abbe56e057f20f883e [3] => 1 [level] => 1 ) Array ( [0] => 2 [id] => 2 [1] => pikachu [username] => pikachu [2] => 670b14728ad9902aecba32e22fa4f6bd [password] => 670b14728ad9902aecba32e22fa4f6bd [3] => 2 [level] => 2 ) Array ( [0] => 3 [id] => 3 [1] => test [username] => test [2] => e99a18c428cb38d5f260853678922e03 [password] => e99a18c428cb38d5f260853678922e03 [3] => 3 [level] => 3 )