首页
文章
留言
首页
文章
留言
PHP常用函数总结
2016 年 11 月 12 日
后端
PHP
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。 下面总结一下经常使用到的一些函数。 ### 常用加密函数 #### md5() ```php string md5 ( string $str [, bool $raw_output = false ] ) ``` > (1)md5()默认情况下以 32 字符十六进制数字形式返回散列值,它接受两个参数,第一个为要加密的字符串,第二个为raw_output的布尔值,默认为false,如果设置为true,md5()则会返回原始的 16 位二进制格式报文摘要。 > (2)md5()为单向加密,没有逆向解密算法,但是还是可以对一些常见的字符串通过收集,枚举,碰撞等方法破解。 #### crypt() ```php string crypt ( string $str [, string $salt ] ) ``` > (1) crypt()接受两个参数,第一个为需要加密的字符串,第二个为盐值(就是加密干扰值,如果没有提供,则默认由PHP自动生成);返回散列后的字符串或一个少于 13 字符的字符串,后者为了区别盐值。 > (2) crypt()为单向加密,跟md5一样。 #### sha1() ```php string sha1 ( string $str [, bool $raw_output = false ]) ``` > (1) 跟md5很像,不同的是sha1()默认情况下返回40个字符的散列值,传入参数性质一样,第一个为加密的字符串,第二个为raw_output的布尔值,默认为false,如果设置为true,sha1()则会返回原始的20 位原始格式报文摘要。 > (2) sha1()也是单行加密,没有逆向解密算法。 #### urlencode() ```php string urlencode ( string $str ) ``` > (1) 一个参数,传入要加密的字符串。(通常应用于对URL的加密) > (2) urlencode为双向加密,可以用urldecode来加密。(严格意义上来说,不算真正的加密) > (3) 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。 > (4) 常见的urlencode()的转换字符: > ? => %3F > = => %3D > % => %25 > & => %26 > \ => %5C > 空格 => %5C #### base64_decode() ```php string base64_decode ( string $encoded_data ) ``` > (1) base64_encode()接受一个参数,也就是要编码的数据。(这里不说字符串,是因为很多时候base64用来编码图片) > (2) base64_encode()为双向加密,可用base64_decode()来解密。 ### 常用字符串处理函数 #### strrev() 说明:字符串反转。 #### strstr() 说明:查找字符串的首次出现。此函数还有个别名:strchr() ```php strstr('book.txt.exe', '.'); //返回“.txt.exe” strstr('book.txt.exe', '.', true); //返回“book” ``` #### mb_substr() 说明:获取部分字符串,可解决截取字符串中文出现乱码。 ```php mb_substr($str, 'utf-8'); mb_substr($str, 0, 6, 'utf-8'); ``` #### str_replace() 说明:字符串替换,区分大小写。 ```php str_replace('a', 'x', $str); //把“a”替换成“x” str_replace(array('_', '='), 'x', $str); //把“_”和“=”替换成“x” ``` #### str_repeat() 说明:重复一个字符串 ```php echo str_repeat("-=", 10); ``` #### strtoupper() 说明:把字符串全部转大写。 #### strtolower() 说明:把字符串全部转小写。 #### trim() 说明:去除字符串首尾处的空白字符(或者其他字符),相关函数还有:ltrim()、rtrim()。 ```php trim($text, " ."); ``` #### explode() 说明:把字符串分割成数组。 ```php explode(',', $input1); ``` #### number_format() 说明:以千位分隔符方式格式化一个数字。 ```php number_format('1234567890'); //返回“1,234,567,890” number_format(88.6666, 2, '.', '') //返回“88.67” ``` #### iconv() 说明:字符集转换。 ```php iconv('GB2312', 'UTF-8', $str); //将字符串的编码从GB2312转到UTF-8 ``` ### 常用数组处理函数 #### array_merge() 说明:将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 ```php $array1 = array("color" => "red", 2, 4); $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); $result = array_merge($array1, $array2); ``` #### array_unshift() 说明:在数组开头插入一个或多个元素。 ```php int array_unshift ( array &$array , mixed $value1 [, mixed $... ] ) ``` array_unshift() 将传入的元素插入到 $array 数组的开头。注意元素是作为整体被插入的,因此传入元素将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。 参数说明: | 参数 | 描述 | | --- | --- | | $array | 输入的数组。 | | $value1 | 开头插入的变量。 | 返回值:返回 array 数组新的元素数目。 #### array_shift() 说明:将数组开头的元素移出数组,并返回这个元素。 ```php $stack = array("orange", "banana", "apple", "raspberry"); $fruit = array_shift($stack); ``` #### array_pop() 说明:将数组最后一个元素移出数组,并返回这个元素。 ```php $stack = array("orange", "banana", "apple", "raspberry"); $fruit = array_pop($stack); ``` #### array_splice() 说明:去掉数组中的某一部分并用其它值取代。 ```php array array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] ) ``` 把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用其中的单元取代。 注意 input 中的数字键名不被保留。 参数说明: | 参数 | 描述 | | --- | --- | | $input | 输入的数组。 | | $offset | 如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除。 | | $length | 如果省略 length,则移除数组中从 offset 到结尾的所有部分。如果指定了 length 并且为正值,则移除这么多单元。如果指定了 length 并且为负值,则移除从 offset 到数组末尾倒数 length 为止中间所有的单元。 如果设置了 length 为零,不会移除单元。 小窍门:当给出了 replacement 时要移除从 offset 到数组末尾所有单元时,用 count($input) 作为 length。 | | $replacement | 如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。如果 offset 和 length 的组合结果是不会移除任何值,则 replacement 数组中的单元将被插入到 offset 指定的位置。 注意替换数组中的键名不保留。如果用来替换 replacement 只有一个单元,那么不需要给它加上 array(),除非该单元本身就是一个数组、一个对象或者 NULL。 | 返回值:返回一个包含有被移除单元的数组。 #### array_unique() 说明:移除数组中重复的值。 ```php array array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) ``` array_unique() 接受 $array 作为输入并返回没有重复值的新数组。注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。 例如,字符串表达一样时,会使用首个元素。 参数说明: | 参数 | 描述 | | --- | --- | | $array | 输入的数组。 | | $sort_flags | 第二个可选参数sort_flags 可用于修改排序行为:SORT_REGULAR、SORT_NUMERIC、SORT_STRING 、SORT_LOCALE_STRING。 | $sort_flags 参数说明: > SORT_REGULAR:按照通常方法比较(不修改类型) > SORT_NUMERIC:按照数字形式比较 > SORT_STRING:按照字符串形式比较 > SORT_LOCALE_STRING:根据当前的本地化设置,按照字符串比较。 返回值:返回过滤后的数组。 #### array_keys() 说明:返回数组中部分的或所有的键名。 ```php array array_keys ( array $input [, mixed $search_value = null [, bool $strict = false ]] ) ``` array_keys() 返回 $input 数组中的数字或者字符串的键名。 如果指定了可选参数 $search_value,则只返回该值的键名。否则 $input 数组中的所有键名都会被返回。 参数说明: | 参数 | 描述 | | --- | --- | | $input | 一个数组,包含了要返回的键。 | | $search_value | 如果指定了这个参数,只有包含这些值的键才会返回。 | | $strict | 判断在搜索的时候是否该使用严格的比较(===)。 | 返回值:返回 $input 里的所有键。 #### array_values() 说明:返回数组中所有的值。 ```php $array = array("size" => "XL", "color" => "gold"); print_r(array_values($array)); ``` #### array_column() 说明:返回数组中指定的一列。 ```php array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) ``` array_column() 返回 $input 数组中键值为 $column_key 的列,如果指定了可选参数 $index_key,那么 $input 数组中的这一列的值将作为返回数组中对应值的键。 参数说明: | 参数 | 描述 | | --- | --- | | $input | 需要取出数组列的多维数组。 如果提供的是包含一组对象的数组,只有 public 属性会被直接取出。 为了也能取出 private 和 protected 属性,类必须实现 __get() 和 __isset() 魔术方法。 | | $column_key | 需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。 也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用) | | $index_key | 作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。 | 返回值:从多维数组中返回单列数组。 #### asort() 说明:对数组进行排序并保持索引关系。与之对应的逆序排序函数是:arsort()。 ```php bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) ``` 对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。 #### array_rand() 说明:从数组中随机取出一个或多个元素。 ```php mixed array_rand ( array $array [, int $num = 1 ] ) ``` 从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。 它使用了伪随机数产生算法,所以不适合密码学场景。 #### implode() 说明:把数组元素组合为一个字符串。 ```php $arr = array('Hello','World!','Beautiful','Day!'); echo implode(" ",$arr); ``` ### 正则表达式函数 #### preg_match() 说明:第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配则需使用 preg_match_all() 函数。 ```php int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) ``` 参数说明: | 参数 | 描述 | | --- | --- | | $pattern | 要搜索的模式,字符串形式。 | | $subject | 输入字符串。 | | $matches | 如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, - $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。 | | $flags | 可以被设置为以下标记值:PREG_OFFSET_CAPTURE | | $offset | 通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于指定从目标字符串的某个未知开始搜索(单位是字节)。 | $flags 参数说明: > PREG_OFFSET_CAPTURE:对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。 #### preg_match_all() 说明:正则表达式全局匹配,成功则返回整个模式匹配的次数(可能为零),如果出错则返回FALSE。 ```php int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] ) ``` 参数说明: | 参数 | 描述 | | --- | --- | | $pattern | 要搜索的模式,字符串形式。 | | $subject | 输入字符串。 | | $matches | 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。 | | $flags | 可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER 和 PREG_SET_ORDER):PREG_PATTERN_ORDER、PREG_SET_ORDER、PREG_OFFSET_CAPTURE。| | $offset | 通常, 查找时从目标字符串的开始位置开始。可选参数offset用于 从目标字符串中指定位置开始搜索(单位是字节)。 | $flags 参数说明: > PREG_PATTERN_ORDER:结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。 > PREG_SET_ORDER:结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。 > PREG_OFFSET_CAPTURE:如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。 ### 文件操作相关函数 #### file_exists() 说明:检查文件或目录是否存在。如果只检测文件则建议用 is_file(),性能没 is_file() 高。如果只检测目录则建议用 is_dir(),性能没 is_dir() 高。 #### is_file() 说明:检测文件是否存在。 ```php bool is_file ( string $filename ) ``` #### is_dir() 说明:检测目录是否存在。 ```php bool is_dir ( string $filename ) ``` #### unlink() 说明:删除文件 ```php bool unlink ( string $filename [, resource $context ] ) ``` #### mkdir() 说明:新建目录。 ```php bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] ) ``` 参数说明: | 参数 | 描述 | | --- | --- | | $pathname | 目录的路径。 | | $mode | 默认的 mode 是 0777,意味着最大可能的访问权。mode 在 Windows 下被忽略。 | | $recursive | 是否递归 | | $context | 对上下文(Context)的支持。 | 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。 #### file_get_contents() 说明:把整个文件读入到一个字符串中 ```php string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] ) ``` 和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents() 将返回 FALSE。 file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。 注意:如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。 #### file_put_contents() 说明:把字符串写入文件中 ```php int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] ) ``` 参数说明: | 参数 | 描述 | | --- | --- | | $filename | 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。 | | $data | 必需。规定要写入文件的数据。可以是字符串、数组或数据流。 | | $flags | 可选。规定如何打开/写入文件。可能的值:FILE_USE_INCLUDE_PATH、FILE_APPEND、LOCK_EX。 | | $context | 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。 | $flags 参数说明: > FILE_USE_INCLUDE_PATH:在 include 目录里搜索 filename。 > FILE_APPEND:如果文件 filename 已经存在,追加数据而不是覆盖。 > LOCK_EX:在写入时获得一个独占锁。 ### 其他函数 #### is_int() 说明:检测变量是否是整数。别名:is_integer()。 ```php bool is_int ( mixed $var ) ``` 如果 $var 是 integer 则返回 TRUE,否则返回 FALSE。 若想测试一个变量是否是数字或数字字符串(如表单输入,它们通常为字符串),必须使用 is_numeric()。 其他判断变量类型相关的函数还有:is_bool()、is_float()、is_integer()、is_numeric()、is_string()、is_array() 和 is_object()。 #### empty() 说明:检查一个变量是否为空。 ```php bool empty ( mixed $var ) ``` 当 $var 存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE. 以下的东西被认为是空的: > "" (空字符串) > 0 (作为整数的0) > 0.0 (作为浮点数的0) > "0" (作为字符串的0) > NULL > FALSE > array() (一个空数组) > $var; (一个声明了,但是没有值的变量) #### isset() 说明:检测变量是否已设置并且非 NULL。 ```php bool isset ( mixed $var [, mixed $... ] ) ``` 如果 var 存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。 如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。 #### ceil() 说明:向上舍入为最接近的整数。 #### floor() 说明:向下舍入为最接近的整数。 #### round() 说明:对浮点数进行四舍五入。 ```php round(1.3); //返回1 round(1.6); //返回2 round(1.87263, 2); //返回1.87 ```
1
相关文章
Redis基本使用总结
Sphinx使用总结
Redis缓存击穿、穿透、雪崩
PHP开发之PDO使用总结
Kafka使用总结
全部分类
前端
后端
运维
架构
算法
数据库
移动应用
桌面应用
程序开发
热门标签
Shell
Supervisor
Composer
多线程
Kafka
HTML
JavaScript
爬虫
Android
Redis
Linux
Git
macOS
Kubernetes
Qt
Nginx
CSS
MySQL
C++
Objective-C
PHP
GUI
Sphinx
CentOS
Lua
Python
MongoDB
Docker
iOS
NoSQL
OpenResty
Elasticsearch
热门文章
OpenResty+Lua+Kafka收集日志
Redis缓存击穿、穿透、雪崩
10种常见的软件架构模式
macOS常用命令
Docker使用总结
C/C++基础知识总结
jquery.tmpl使用总结
Elasticsearch详解
Nginx常用配置说明
HTML5常用特性总结