Skip to content

PHP学习笔记

PHP学习笔记

一、基本知识

1.1函数知识

phpinfo:这个函数会显示一个当前电脑(服务器)的详细php信息。

1.2常量变量

PHP变量以美元符$开始。

变量可分类为:可变变量,外部变量,环境变量

可变变量EX:

1
2
3
4
5
6
7
8
9
10
11
<?php
// 服务器读取的 编码设置
header('Content-type:text/html;charset=utf-8');
//定义了一个变量叫作$shu 将$shu这个变量的值设为字符串的biao
$shu = ‘biao’;
//定义了一个变量叫作$biao 将他的值设置为鼠标
$biao = ‘鼠标’;
//$$shu就是可变变量;在已声明的变量$shu前又加上了一个变量符
echo $$shu;
?>

外部变量EX:

1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head>
</head>
<body>
<!-- 这一行method 对应的值改为post --->
<form action="req.php" method="post">
<input type="text" name="username"/>
<input type="password" name="pwd"/>
<input type="submit" name="提交"/>
</form>
</body>
</html>

PHP代码调用

1
2
3
4
5
6
7
8
9
<?php
//$_POST[‘username’],将username作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”username”/>的值
$u = $_POST['username'];
echo $u.'<br />';
//$_POST[‘pwd’],将pwd作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”pwd”/>的值
$passwd = $_POST['pwd'];
echo $passwd.'<br />';
?>

在这里插入图片描述

环境变量:

$_SERVER

在这里插入图片描述

常量:

代码中的定义:

define(常量名,常量值)

1、常量名可以小写,但是通常大写
2、常量名可以不加引号,但是通常加上引号
3、在字符串中调用常量的时候,必须在引号外面
4、常量名建议只用字母和下划线

1
2
3
4
5
6
7
8
9
<?php
define('MY_NAME','PHP中文网');
echo MY_NAME;
//下面是错误的调用方式
echo '我的名字是MY_NAME';
//下面是正确的调用方式
echo '我的名字是'.MY_NAME;
?>

一些内置的常量

1.3php数据类型

在这里插入图片描述

2种特殊的数据类型:

resource(资源类型)与null(无/空白类型)

1.4查看数据类型和判断数据类型

查看数据类型:
1、gettype(传入一个变量)能获得变量的类型
2、var_dump(传入一个变量)输出变量类型和值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//声明一个变量88.8,可以自己多做几次实现换成其他类型看看$type输出是多少。
$float = 88.8;
$type = gettype($float);
echo $type;
?>

<?php
//多换几个类型试试
$str = '你喜欢男人还是喜欢女人';
$type = var_dump($str);
echo $type;
?>

判断数据类型

在这里插入图片描述

numeric:数值

callable:函数

scalar:标量


1.5PHP三元运算符及其他运算符

在这里插入图片描述

1.6PHP流程控制语句

if switch while for基本与c相同

1
2
3
do{
//代码框
}while(判断)
1
2
3
4
5
6
7
8
9
10
<?php
for ($i=0;$i<100;$i++){
echo '第'.$i.'每周往返北京大连<br />';
if($i == 17){
goto end;
}
}
end:
echo '集团公司要求停止此项';
?>

1.7PHP函数基本语法

1
2
3
4
5
Function 函数名(参数名1=[值1], 参数名2=[值2] , 参数名n=[值n])
{
函数中的功能体
[return 返回值]
}

文件包含

在这里插入图片描述

数学常用函数总结:

在这里插入图片描述

字符串常用函数总结:

在这里插入图片描述

dirname:

1
2
3
$path = "/var/www/html/index.php";
$dir = dirname($path);
echo $dir; // 输出: /var/www/html

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

疑似有点多了

时间函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 
$mytime = getdate();
echo "年 :".$mytime['year']."\n";
echo "月 :".$mytime['mon']."\n";
echo "日 :".$mytime['mday']."\n";
echo "时 :".$mytime['hours']."\n";
echo "分 :".$mytime['minutes']."\n";
echo "秒 :".$mytime['seconds']."\n";
echo "一个小时中的第几钟 :".$mytime['minutes']."\n";
echo "这是一分钟的第几秒 :".$mytime['seconds']."\n";
echo "星期名称 :".$mytime['weekday']."\n";
echo "月份名称 :".$mytime['month']."\n";
echo "时间戳 :".$mytime[0]."\n";
?>

1.8PHP数组结构

数组array,可以存入多个不同类型的数据,为复合数据类型。

1
2
3
4
5
6
<?php
$shu = array(1 , 1.5 , true ,'你好,世界');
echo '<pre>';
var_dump($shu);
echo '</pre>';
?>

关于为什么在var_dump前后加入 echo <pre>:echo ‘

';将
 标签作为 HTML 输出到浏览器,这告诉浏览器开始一个预格式化的区域。var_dump($shu);输出数组的详细信息,这部分信息将被
 标签格式化。最后,echo '
‘;关闭
` 标签,结束预格式化区域。

1
2
3
4
5
6
7
8
<?php
$kele = array('只有不断努力才能博得未来',10 => 'NoAlike', 'PHP中文网' , '去PHP中文网学PHP', 19 => '苹果和梨子我都爱' , '橘子我最爱');
//打印显示$kele
echo '<pre>';
var_dump($kele);
echo '</pre>';
?>

通过键值对应符,可以做到索引数组下标不一次从0开始。

常用操作数组函数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.9正则表达式

可以有效地处理和操纵文本。例如,它可以用于验证用户输入的数据格式(例如,姓名,电子邮件,电话号码等)是否正确,在文本内容中查找或替换匹配的字符串,等等。

在正则表达式中具有特殊含义的字符是:. * ? + [ ] ( ) { } ^ $ | \。每当想按字面意义使用它们时,都需要反斜杠。例如,如果要匹配“.”,则必须编写.。

[abc] 匹配字符a,b或c中的任何一个。
[^abc] 匹配a,b,c以外的任何一个字符。
[a-z] 匹配从小写字母a到小写字母z的任意一个字符。
[A-Z] 匹配从大写字母A到大写字母Z的任意一个字符。
[a-Z] 匹配从小写字母a到大写字母Z的任意一个字符。
[0-9] 匹配0到9之间的一个数字。
[a-z0-9] 匹配a与z之间 或 0与9之间的单个字符。

正则表达式,可以用特殊含义字符定界,如:

1
2
3
4
5
/中间写正则/
$中间写正则$
%中间写正则%
^中间写正则^
@中间写正则@
preg_match() 执行正则表达式匹配。
preg_match_all() 执行全局正则表达式匹配。
preg_replace() 执行正则表达式搜索并替换。
preg_grep() 返回与模式匹配的输入数组的元素。
preg_split() 使用正则表达式将字符串拆分为子字符串。
preg_quote() 引用在字符串中找到的正则表达式字符。

2.0PHP文件操作

readfile ( string: $文件名)
功能:传入一个文件路径,输出一个文件。

1
2
3
4
5
6
7
<?php
//linux类的读了方式
readfile("/home/paul/test.txt");
//windows类的读取方式
readfile("c:\\oldboy\\oldboy\\boot.ini");
?>

file_get_contents打开文件函数:

1
2
3
4
5
6
<?php
$filename = 'NoAlike.txt';
$filestring = file_get_contents($filename);
echo $filestring;
?>

2.1魔术常量

_LINE_

1
2
3
<?php
echo '这是第 " ' . __LINE__ . ' " 行';
?>

2.2反序列化常用魔术

__construct()//当一个对象创建时被调用

__destruct() //当一个对象销毁时被调用

__toString() //当一个对象被当作一个字符串使用

__sleep()//在对象在被序列化之前运行

__wakeup()//将在反序列化之后立即被调用(通过序列化对象元素个数不符来绕过)

__get()//获得一个类的成员变量时调用

__set()//设置一个类的成员变量时调用

__invoke()//调用函数的方式调用一个对象时的回应方法

__call()//当调用一个对象中的不能用的方法的时候就会执行这个函数

2.3 关联数组

关联数组(Associative Array)是PHP中一种数组类型,它的特点是数组的**键(key)**不是数字,而是**字符串**或其他数据类型。每个键与一个值(value)相关联,形成“键 => 值”的键值对。

1
2
$whitelist = ["source" => "source.php", "hint" => "hint.php"];
echo $whitelist["source"]; // 输出 "source.php"

2.4 mb_substr & mb_strpos

mb_substr 和 mb_strpos 都是 PHP 中与多字节字符(如中文、日文等)相关的字符串处理函数,它们属于 mbstring(多字节字符串处理扩展Multibyte String)库的一部分。

与标准的 substr 和 strpos 函数相比,mb_substr 和 mb_strpos 更适合处理多字节字符集,特别是对于非拉丁字符(如中文、日文、韩文)等情况。

mb_substr:多字节字符串截取:

1
mb_substr(string $str, int $start, int $length = NULL, string $encoding = NULL): string

$str:要截取的原始字符串。

$start:开始截取的位置(基于 0 的索引,支持负值表示从字符串末尾开始)。

$length(可选):截取的长度(单位为字符数,而不是字节数)。如果省略,则截取到字符串末尾。

$encoding(可选):字符编码,默认是 UTF-8。

mb_strpos:查找多字节字符串的位置:

1
mb_strpos(string $haystack, string $needle, int $offset = 0, string $encoding = NULL): int|false

2.5 $_REQUEST

$_REQUEST是PHP中用来获取请求参数的全局数组,可以同时包含GET、POST、COOKIE中的

2.6 超级全局数组

$_REQUEST 并不算是 PHP 的 魔术(magic),而是 PHP 的一个 超级全局数组(superglobal array)。它是内置的、自动可用的全局变量,能够存储来自 HTTP 请求 的数据,包括 GET、POST 和 COOKIE 的数据。

  1. 什么是 PHP 的超级全局数组?

PHP 提供了一些预定义的全局数组,叫做 超级全局数组。这些数组可以在任何作用域内访问,而不需要通过 global 关键字显式声明。PHP 中常用的超级全局数组包括:

1
2
3
4
5
6
7
8
$_GET:用于获取 URL 查询字符串中的参数(通常是通过 GET 请求传递的)。
$_POST:用于获取通过 HTTP POST 请求发送的数据。
$_REQUEST:用于获取来自 GET、POST 和 COOKIE 的请求数据。
$_COOKIE:用于获取来自客户端的 cookies。
$_FILES:用于获取上传的文件信息。
$_SERVER:包含服务器和执行环境的相关信息。
$_ENV:包含环境变量。
$_SESSION:用于管理会话数据。

About this Post

This post is written by Linly, licensed under CC BY-NC 4.0.