php常用总结
1. PHP处理脚本解析(脚本不乱码)
header('Conent-type:text/html;charset=utf-8');
2. 常用的系统函数
2.1 有关输出的函数:print和print_r
print()==类似于echo输出提供的内容,本质是一种结构(不是函数),返回1,可以不需要使用括号;
print_r()==类似于var_dump,但是比var_dump简单,不会输出数据的类型,只会输出值(数组打印使用比较多)
2.2 有关时间的函数
date()格式化时间
按照指定格式对对应的时间戳(从1970年格林威治时间开始计算的秒数)转换成指定的格式,如果没有指定特定的时间戳,那么就是默认解释当前时间戳
// 当前系统时间
echo date('Y-m-d H:i:s');
// 第2个参数是指定时间戳,表示指定时间戳的时间
echo date('Y-m-d H:i:s',5689562323);
time()当前时间的时间戳
$curWeek= date('Y-m-d H:i:s');
echo '当前日期:'.$curWeek;
$nextWeek=date('Y-m-d H:i:s',time()+7*24*60*60);
echo '下周:'.$nextWeek;
microtime()获取微秒级别的时间
strtotime()按照规定格式的字符串(必须是英文的)转换成时间戳
$nextWeek=date('Y-m-d H:i:s',strtotime('tomorrow 10 hours'));
echo '明天10点:'.$nextWeek;
3. 有关数字的函数
max()==指定参数中最大的值
min()==比较两个数中较小的值
rand()==得到一个随机数,指定区间的随机整数
mt_rand()==与rand一样,只是底层结构不一样,效率比rand高(建议使用)
round()==四舍五入
ceil()==向上取整
floor()==向下取整
pow()==求指定数字的指定指数次结果:pow(2,8) == 2^8 == 256
abs()==绝对值
sqrt()==求平方根
4. 有关函数的函数
function_exists():判断指定的函数名字是否在内存中存在(帮助用户不去使用一个不存在的函数,让代码安全性更高)
func_get_arg():在自定义函数中去获取指定数值对应的参数
func_get_args():在自定义函数中获取所有的参数(数组)
func_num_args():获取当前自定义函数的参数数量
3. 数组常用操作
3.1 数组常用的函数
count()
:获取数组长度
array_push()
:往数组中加入一个元素(数组后面)
array_pop()
:从数组中取出一个元素(数组后面)
array_shift()
:从数组中取出一个元素(数组前面)
array_unshift()
:从数组中加入一个元素(数组前面)
array_reverse()
:数组元素反过来
in_array()
:判断一个元素在数组中是否存在
array_keys()
:获取一个数组的所有下标,返回一个索引数组
array_values()
:获取一个数组的所有值,返回一个索引数组
排序
数组中的元素能够以字母或数字进行升序或降序排序
sort()
== 以升序对数组排序
rsort()
== 以降序对数组排序
asort()
根据值,以升序对关联数组进行排序
ksort()
==根0据键,以升序对关联数组进行排序
arsort()
==根据值,以降序对关联数组进行排序
krsort()
==根据键,以降序对关联数组进行排序
shuffle()
== 随机打乱数组元素,数组下标会重排
指针函数
reset()
:重置指针,将数组指针回到首位
end()
:重置指针,将数组指针指向最后一个元素
next()
:指针下移,取得下一个元素的值
prev()
:指针上移,取得上一个元素的值
current()
:获取当前指针对应的元素值
key()
:获取当前指针对应的下标值
注意事项:next和prev会移动指针,有可能导致指针移动到最前或者最后(离开数组),导致数组不能使用,通过next和prev不能回到真确的指针位置。只能通过end或者reset进行指针重置
3.2 数组遍历
3.2.1 foreach
遍历
语法:
foreach($数组变量 as [$下标 =>] $值){
//通过 $下标 访问元素的下标;通过 $值 访问元素的值
}
索引数组:可以直接访问,key就是数组的下标 (一维数组)
$info=array('Tom','Mary','Jack');
foreach($info as $key=>$val){
echo $key .'=' .$val; // 0=Tom 1=Mary 2=Jack
};
关联数组(一维数组)
$info=array('name'=>'Tom','age'=>10);
foreach($info as $key=>$val){
echo $key . '===' . $val; // name===Tom age===10
};
关联数组(二维数组)
$info=array(
array('name'=>'Tom','age'=>10),
array('name'=>'Mary','age'=>20),
array('name'=>'Jack','age'=>30)
);
foreach($info as $key=>$val){
echo 'name is '.$val['name']. 'and age is '. $val['age'] . '</br>';
};
// name is Tom and age is 10
// name is Mary and age is 20
// name is Jack and age is 30
3.2.2 for
遍历
// 索引数组
$cars = array("porsche", "BMW", "Volvo");
$arrlength = count($cars);
for ($x = 0; $x < $arrlength; $x++) {
echo $cars[$x];
echo "<br>";
}
4 常用字符串函数
4.1 strlen()
函数和mb_strlen
函数
strlen()
函数:返回字符串的长度,以字节为单位
mb_strlen()
函数:直接返回字符串的长度
如果字符串都是英文,则 strlen()
函数和mb_strlen
函数返回的字符串长度一样;
如果字符串是中英文,strlen()
函数是返回计算后(以字节为单位:中文在utf-8字符集下占用3字节)的长度;mb_strlen
函数则是直接返回字符串长度
<?php
$str1='abc';
echo strlen($str1); // 输出:3
echo mb_strlen($str1); // 输出:3
$str2='你好abc';
echo strlen($str2); // 输出:9
echo mb_strlen($str2); // 输出:5
中文在utf-8字符集下占用3字节
4.2 str_word_count()
函数
对字符串中的单词进行计数
echo str_word_count("Hello world!"); // 输出 2
4.3 strrev()
函数:反转字符串
echo strrev("Hello world!"); // 输出 !dlrow olleH
4.4 查找函数:strpos(), strrpos()
strpos(字符串,匹配字符):判断字符在目标字符串中出现的位置(首次)
strrpos(字符串,匹配字符):判断字符在目标字符串中最后出现的位置
- 如果找到匹配,则会返回首个匹配的字符位置(从0开始)。如果未找到匹配,则将返回 FALSE
echo strpos("Hello world!","world"); //返回结果 6
4.5 替换函数: str_replace()
str_replace(匹配目标,替换的内容,字符串本身):将目标字符串中部分字符串进行替换
// 下面的例子用 "Kitty" 替换文本 "world":
echo str_replace("world", "Kitty", "Hello world!"); // 输出 Hello Kitty!
4.6 截取字符串 substr(), strstr()
substr(字符串,起始位置从0开始[,长度]):指定位置开始截取字符串,可以截取指定长度(不指定到最后)
strstr(字符串,匹配字符):从指定位置开始,截取到最后(可以用来去文件后缀名)
4.7 转换函数:implode(), explode(), str_split()
implode(连接方式,数组):将数组中的元素按照某个规则连接成一个字符串
$names=array('Sunny','Amy','Mark');
echo implode('=',$names); // Sunny=Amy=Mark
explode(分割字符,目标字符串):将字符串按照某个格式进行分割,变成数组
$names='Sunny=Amy=Mark';
print_r(explode('=',$names)); // Array ( [0] => Sunny [1] => Amy [2] => Mark )
str_split(字符串,字符长度):按照指定长度拆分字符串,得到数组
4.8 去除空格函数 trim(), ltrim(), rtrim()
trim(字符串[,指定字符]):本身默认是用来去除字符串两边的空格(中间不行);但是也可以指定要去除的内容,是按照指定的内容循环去除两边有的内容:直到碰到一个不是目标字符为止
ltrim():去除左边的
rtrim():去除右边的
4.9 大小转换函数:strtolower(), strtoupper(), ucfirst()
strtolower:全部小写
strtoupper:全部大写
ucfirst:首字母大写
4.10 格式化函数:printf(), sprintf()
printf/sprintf(输出字符串有占位符,顺序占位内容..):格式化输出数据
4.11 str_repeat()
:重复某个字符串N次
4.12 str_shuffle()
:随机打乱字符串
4.13 htmlspecialchars() 函数:将特殊字符转为 HTML 实体
htmlspecialchars() 函数把特殊字符转换为 HTML 实体
比如可以将 < 和 > 之类的 HTML 字符会被替换为 <
和 &g
这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用
通过使用 htmlspecialchars() 函数能够避免 $_SERVER["PHP_SELF"]
被利用,是因为htmlspecialchars() 函数把特殊字符转换为 HTML 实体
$_SERVER["PHP_SELF"]
是一种超全局变量,返回当前执行脚本路径(带着文件名)
<?php
// 表单代码是这样的:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
// 现在,如果用户试图利用 PHP_SELF 变量,会导致如下输出:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
4.14 stripslashes函数:删除用户输入数据中的反斜杠(\)
//校验函数
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
4.15 preg_match() 函数检索字符串的模式,如果模式存在则返回 true,否则返回 false
//检查 name 字段是否包含字母和空格
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
$nameErr = "只允许字母和空格!";
}
$email = test_input($_POST["email"]);
// 检查电邮地址语法是否有效
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
$emailErr = "无效的 email 格式!";
}
$website = test_input($_POST["website"]);
// 检查 URL 地址语言是否有效(此正则表达式同样允许 URL 中的下划线)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%
=~_|]/i", $website)) {
$websiteErr = "无效的 URL";
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具