php的函数是在太多,而且风格各有不同。与其博览php的所有函数,不如总结一些常用的函数,形成自己处理业务的一套逻辑来的轻松和有用。
字符串操作:
字符串截取
substr(string, start, length)
查找字符串出现位置
strpos(string, find, start), 第一次出现的文职
stripos(), 第一次出现的位置,不区分大小写
strrpos(), 最后一次出现的位置
strripos(), 最后一次出现的位置,不区分大小写
字符串正则表达式分割
array preg_split( string pattern, string subject [, int limit [, int flags]] )
parttern是正则表达式,subject是将被分割的字符串。
limit使用用来限制返回子串的个数。
flag,PREG_SPLIT_NO_EMPTY
:只返回非空的成分
时间操作:
获取时间字符串 date("Y-m-d H:i:s")
获取时间戳 time()
字符串转时间戳
<1> strtotime("2018-08-20 22:10:00")
<2> strtotime("+1 day")
<3> strtotime("+1 week 2 day 3 hour 2 second")
获取一天前的时间戳 date("Y-m-d H:M:S", strtotime("-1 day"))
数组操作:
数组切片
array_slice(array, start, length, [preserve]), preserve 如果设置为True,则保留键名。如果为false,则重置键名。false是默认。
删除数组第一个元素,并返回删除的元素
array_shift(array);
数组排序
针对index数组:sort,rsort
针对关联数组:ksort, krsort, asort, arsort, 前两个是根据key排序,后两个是根据value排序,排序后key和value的关联性不发生改变。
正则表达式
以res开头,以fff结尾,取中间的内容
文件操作:
获取某个文件夹下的目录和文件
glob ( string $pattern [, int $flags ] )
参数1是匹配模式,一般用*号来扩展。
参数2比较常用的是GLOB_BRACE,扩充{txt,php},来搜索txt和php。GLOB_ONLYDIR,只返回与模式匹配的目录项。
比如获取当前目录下的php和txt文件:
$items = glob(' *.{php,txt} ', GLOB_BRACE);
返回的文件是包含路径的,如果pattern传入的是相对路径,则返回相对路径,否则就是绝对路径
$items = glob(' ../log/*.txt');
返回的是 ../log/info.2018-08-15, ../log/info.2018-08-16组成的数组。
执行外部命令:
非交互式
system(command, [ return_value ]), 输出和返回结果,第二个参数可选,得到命令执行后的状态码
exec(command, [ array ], [ return_value ]), 返回结果的最后一行,但是不输出结果。如果传入array,则会得到完整结果,并且同时可以指定return value来得到状态码。
passthru(command, [ return_value ]), 不返回执行结果,把结果原模原样输出到标准输出上。
交互式
以上的命令只能是简单地执行一个命令,而不能交互。shell中有很多情况下要输入一些东西才可以继续执行下去,比如使用sudo创建一个文件夹,这时候就需要输入密码。popen(command, mode), 原理是以管道的方式启动一个进程。因为管道是单向的,所以mode只能是r或者w。