首页
文章
留言
首页
文章
留言
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
相关文章
PHP使用Kafka
Nginx常用配置说明
Kafka使用总结
Redis缓存击穿、穿透、雪崩
Sphinx使用总结
全部分类
前端
后端
运维
架构
算法
数据库
移动应用
桌面应用
程序开发
热门标签
NoSQL
Sphinx
Redis
JavaScript
Composer
Objective-C
MySQL
macOS
Shell
Elasticsearch
Docker
MongoDB
C++
GUI
Kafka
多线程
Linux
PHP
HTML
CSS
Android
Kubernetes
CentOS
iOS
Nginx
Qt
OpenResty
Supervisor
爬虫
Python
Git
Lua
热门文章
Redis、MemCache、MongoDB比较
macOS常用命令
Nginx常用配置说明
OpenResty+Lua+Kafka收集日志
Elasticsearch详解
Supervisor使用总结
Git使用总结
CentOS常用命令总结
Qt实现TCP通讯
HTML5常用特性总结