[PHP从小白到大牛]-015 PHP系统函数-字符串/数学/时间日期

系统函数

  • 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 不编码任何引号

实体符号javascript

显示结果 描述 实体名称 实体编号
空格 &nbsp; &#160;
< 小于号 &lt; &#60;
> 大于号 &gt; &#62;
& 和号 &amp; &#38;
" 引号 &quot; &#34;
' 撇号 &apos; (IE不支持) &#39;
分(cent) &cent; &#162;
£ 镑(pound) &pound; &#163;
¥ 元(yen) &yen; &#165;
欧元(euro) &euro; &#8364;
§ 小节 &sect; &#167;
© 版权(copyright) &copy; &#169;
® 注册商标 &reg; &#174;
商标 &trade; &#8482;
× 乘号 &times; &#215;
÷ 除号 &divide; &#247;

完整的实体符号列表: www.w3school.com.cn/tags/html_r…php

<?php

$a =  "a>b,b<a,'a!=b";

echo htmlspecialchars($a,ENT_NOQUOTES);
复制代码

ltrim

  • 删除字符串左侧的空白字符html

  • 空白字符包括java

  • \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~7apache

  • d==>日, 月份中的第几天, 有前导零, 大写的D, 星期几, 取前三个字母数组

  • H==>时, 小时, 有前导零, 24制, 小写的h, 有前导零, 12小时制, 须要前面加上a(am/pm), 表示上午仍是下午, 大写的A表示AM/PMbash

  • i==>分, 表示分钟, 有前导零ide

  • 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());
复制代码

相关文章
相关标签/搜索