系统函数
- PHP自带的函数, 可以直接使用, 无需另外安装
字符串函数
strlen
- 用于获取字符串长度
- int strlen(string $str)
<?php
echo strlen('I love work !');
echo strlen(" "); // 空格也算一个长度
echo strlen("我爱工作"); // 中文 utf8 1:3, 不建议判断中文的长度
strtolower
- 用于将字符串变成小写
<?php
$str = 'I love work !';
$str2 = strtolower($str);
var_dump($str); // 不会影响原来的字符串
var_dump($str2);
strtoupper
- 将字符串转成大写
<?php
$str = 'I love work !';
$str2 = strtoupper($str);
var_dump($str);
var_dump($str2);
ucfirst
- 将句子的首字母转成大写
ucwords
- 将每个单词的首字母转成大写
<?php
$str = 'i love work !';
var_dump(ucfirst($str)); // I love work !
var_dump(ucwords($str)); // I Love Work !
// 原来的字符串没有变
str_replace
- 字符串替换, 区分大小写
- 如果找不见目标字符串, 原样输出
<?php
$str = "I love China China";
var_dump(str_replace("China", "USA", $str));
var_dump($str); // I love USA USA
str_ireplace
- 字符串替换, 不区分大小写
<?php
$str = "I love China China";
var_dump(str_ireplace("china", "USA", $str));
htmlspecialchars
- 把预定义的字符, 转成html实体
- 第一个参数, 要处理的字符串
- 第二个参数, 规定是否转义引号
- ENT_COMPAT 只编码双引号(默认)
- ENT_QUOTES 编码双引号和单引号
- ENT_NOQUOTES 不编码任何引号
实体符号
| 显示结果 | 描述 | 实体名称 | 实体编号 |
|---|---|---|---|
| 空格 | |
  |
|
| < | 小于号 | < |
< |
| > | 大于号 | > |
> |
| & | 和号 | & |
& |
| " | 引号 | " |
" |
| ' | 撇号 | ' (IE不支持) |
' |
| ¢ | 分(cent) | ¢ |
¢ |
| £ | 镑(pound) | £ |
£ |
| ¥ | 元(yen) | ¥ |
¥ |
| € | 欧元(euro) | € |
€ |
| § | 小节 | § |
§ |
| © | 版权(copyright) | © |
© |
| ® | 注册商标 | ® |
® |
| ™ | 商标 | ™ |
™ |
| × | 乘号 | × |
× |
| ÷ | 除号 | ÷ |
÷ |
完整的实体符号列表: www.w3school.com.cn/tags/html_r…
<?php
$a = "a>b,b<a,'a!=b";
echo htmlspecialchars($a,ENT_NOQUOTES);
ltrim
-
删除字符串左侧的空白字符
-
空白字符包括
-
\t \r " " \n
<?php
$str = " \t\t\thello";
echo '#'.ltrim($str).'#';
echo "<br>";
echo '#'.$str.'#';
rtrim
- 删除右侧的空白符
<?php
$str = "hello \t\t\t";
echo '#'.rtrim($str).'#';
echo "<br>";
echo '#'.$str.'#';
trim
- 删除两侧的空白符
<?php
$str = " \t\t\t\t hello \t\t\t";
echo '#'.trim($str).'#';
echo "<br>";
echo '#'.$str.'#';
strpos
- 查找字符串在目标字符串中, 第一次出现的位置
<?php
$str = "I love China China";
echo strpos($str, "China"); // 7, 如果找不见, 是false
stripos
- 查找字符串在目标字符串中, 第一次出现的位置, 不区分大小写
<?php
$str = "I love China China";
var_dump(stripos($str, "china")); // 7
strrpos
- 查找字符串在目标字符串中, 最后一次出现的位置, 区分大小写
<?php
$str = "I love China China";
var_dump(strrpos($str, "China")); // 13
strripos
- 查找字符串在目标字符串中, 最后一次出现的位置, 不区分大小写
<?php
$str = "I love China china";
var_dump(strripos($str, "China")); // 13
substr
- 截取字符串
- 第一个参数 目标字符串
- 第二个参数 起始位置, 从0开始, 负数表示倒数
- 第三个参数 截取长度, 负数表示倒数
<?php
$str = "javascript";
echo substr($str, 0); // 没有第三个参数, 默认截到末尾 javascript
echo "<br>";
echo substr($str, 3); // 没有第三个参数, 默认截到末尾, 从第三个开始, ascript
echo "<br>";
echo substr($str, 1, 3); // 从第二个, 向后截取三个, ava
echo "<br>";
echo substr($str, 1, -3); // 从第二个, 截取到倒数第三个, avascr
echo "<br>";
echo substr($str, -6); // 从倒数第6个, 截取到结尾, script
echo "<br>";
echo substr($str, -6, 3); // 从倒数第6个, 往后截3个, scr
echo "<br>";
echo substr($str, -6, -2); // scr, 从倒数第6个, 截到倒数第三个,scri
strstr
- 搜索字符串在目标字符串中出现的位置, 返回余下的部分,包括搜索的字符串. 多个匹配, 从第一个开始. 区分大小写
<?php
$str = "javascript";
echo strstr($str, 'a'); // avascript
stristr
- 搜索字符串在目标字符串中出现的位置, 返回余下的部分,包括搜索的字符串. 多个匹配, 从第一个开始. 不区分大小写
<?php
$str = "jAvascript";
echo stristr($str, 'a'); // Avascript
strrchr
- 搜索字符串在目标字符串中, 最后一个出现的位置, 返回余下的部分, 包括搜索字符串, 区分大小写
<?php
$str = "javascript";
echo strrchr($str, 'a'); // ascript
strrev
- 反转字符串
<?php
$str = "abc";
echo strrev($str); // cba
md5
- md5是一种加密算法, 使用该函数, 可以返回字符串的md5值
- md5是一般是32位长度
<?php
$str = "abc";
echo md5($str); // 900150983cd24fb0d6963f7d28e17f72
str_shuffle
- 随机打乱字符串
- 可以用于生成验证码
<?php
$str = "abcdefghijklmnopqrstuvwxyz1234567890";
echo substr(str_shuffle($str),0,4);
explode
- 字符串转数组
- 第一个参数是分隔符
- 第二个参数是字符串
- 如果分隔符不存在, 字符串作为数组的唯一的一个元素
<?php
$str = "I-love-work";
var_dump(explode(" ", $str)); //
implode
- 数组转字符串
- 第一个参数, 连接符
- 第二个参数, 数组
<?php
$arr = ['I', 'love', 'work'];
echo implode(' ', $arr);
sprintf
- 格式化字符串
<?php
$num = 5;
$address = "ShangHai";
// $str = "There are $num millions cars in $address";
// $str = 'There are '.$num.' millions cars in '.$address;
$str = "There are %d millions cars in %s";
$str1 = sprintf($str,$num,$address);
echo $str1; // There are 5 millions cars in ShangHai
- %d ==> 十进制数字
- %s ==> 字符串
- %f ==> 小数
- %e ==> 科学计数法
- %b ==> 二进制数字
- %% ==> %
<?php
$num = 5;
$address = "ShangHai";
$price = 112345.6789;
// $str = "There are $num millions cars in $address";
// $str = 'There are '.$num.' millions cars in '.$address;
$str = "There are %d millions cars in %s, every car is ¥ %.2f";
$str1 = sprintf($str,$num,$address,$price);
echo $str1; // There are 5 millions cars in ShangHai, every car is ¥ 112345.68
数学函数
floor
- 实现
向下取整
ceil
- 实现
向上取整
pow
- 乘方运算
<?php
echo pow(2,3); // 8
echo "<br>";
echo 2**3; // 8
sqrt
- 平方根
<?php
echo sqrt(3); // 1.7320508075689
max
- 最大值
<?php
echo max([1,2,3,4]); // 4
echo max(1,2,3,4,4,6,4); // 6
min
- 最小值
mt_rand
- 生成一个随机数
- 参数一: 开始
- 参数二: 结束
- 包括开始和结束
round
- 四舍五入
number_format
- 使用千分位分隔符格式化数字
- 第一个参数, 需要格式化的数字
- 第二个参数, 如果是小数, 要保留几位, 四舍五入
- 第三个参数, 自定义小数点符号
- 第四个参数, 自定义千分位分隔符的符号
echo number_format(100000.123456,2,"*","--"); // 100--000*1235
fmod
- 浮点数取模/求余
<?php
echo fmod(21.2, 6); // 3.2
echo "<br/>";
echo 21.2%6; // 3
时间日期函数
date
- 格式化本地时间/日期
<?php
echo date('Y年m月d日 H时i分s秒'); // 获取的时间, 比北京时间晚8个小时
-
Y==>年, 大写4位年份, 小写y2位年份 -
m==>月, 大写英文单词, 前三个字母缩写, 小写, 数字月份, 有前导零, n是没有前导零, 大写N, 星期数, 从1~7 -
d==>日, 月份中的第几天, 有前导零, 大写的D, 星期几, 取前三个字母 -
H==>时, 小时, 有前导零, 24制, 小写的h, 有前导零, 12小时制, 需要前面加上a(am/pm), 表示上午还是下午, 大写的A表示AM/PM -
i==>分, 表示分钟, 有前导零 -
s==>秒, 有前导零 -
第一个参数, 格式化的字符串
-
第二个参数, 时间戳, 如果不写, 默认当前时间
-
什么是时间戳? 一个数字, 1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
date_default_timezone_set
- 设置默认时区(只对当前php文件有效)
- 返回布尔值, 设置成功true, 设置失败false
- 一个参数, 表示时区的字符串
- 合法时区列表: www.php.net/manual/zh/timezones.php
<?php
date_default_timezone_set("Asia/Shanghai"); // 设置时区
var_dump(date('Y年m月d日 H时i分s秒'));
date_default_timezone_get
- 获取默认时区(取决于设置)
date_default_timezone_set('Asia/Shanghai');
echo date_default_timezone_get();
var_dump(date('Y年m月d日 H时i分s秒'));
也可以通过修改配置文件, 来永久改变时区设置
-
先找到
php.ini, 以我电脑为例,C:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php.ini -
搜索
date.timezone

- 需要重启apache服务
- 这样的好处, 不用每个文件都加上
date_default_timezone_set()
time
- 返回时间戳
<?php
var_dump(time()); // 获取当前时间戳
<?php
echo date("当前时间: Y-m-d H:i:s",time());
echo "<br/>";
echo date("昨天的当前时间: Y-m-d H:i:s",time()-24*60*60);
strtotime
- 字符串转时间戳
- 返回时间戳, int类型
- 第二个参数, 是计算时间戳时的参考值, 不写参考当前时间
<?php
echo date("当前时间: Y-m-d H:i:s",time());
echo "<br/>";
echo date("昨天的当前时间: Y-(intval(m)-1)-d H:i:s",time()-24*60*60);
echo "<br/>";
echo "昨天的当前时间: ".date("Y-m-d H:i:s",strtotime('-1 day'));
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
microtime
- 返回时间戳和微秒数
- 第一个参数, 布尔值, 如果是true, 则把毫秒和秒拼接起来, 默认是false, 显示用空格分开的结果
uniqid
- 生成唯一id
- 第一个参数是前缀
<?php
var_dump(uniqid(microtime(true)*1000));
getdate
-
获取日期和时间信息
-
参数: 时间戳
<?php
var_dump(getdate());
