PHP-基础
    - 介绍
 - 本地环境安装
 - 安装 WNMP 环境
 - 代码编辑器选择
 - 语法
 - 变量与常量
 - 常见输出函数
 - 数据类型之四种标量类型
 - 数据类型之三种复合类型
 - 数据类型之两种特殊类型
 - Operators:运算符
 - 流程控制:条件判断语句
 - 流程控制:循环语句
 - 流程控制:中止语句
 - 函数
 - 类和对象:基本概念
 - 类和对象:类结构
 - 类和对象:面向对象
 - 类和对象:三种特殊类
 - 类和对象
 - 类和对象:Trait
 - 类和对象:魔术方法
 - 命名空间
 - 【实战】PHP表单
 
PHP-函数
    - 
                        String
- addcslashes()
 - addslashes()
 - bin2hex()
 - chop()
 - chr()
 - chunk_split()
 - convert_cyr_string()
 - convert_uudecode()
 - convert_uuencode()
 - count_chars()
 - crc32()
 - crypt()
 - echo
 - explode()
 - fprintf()
 - get_html_translation_table()
 - hebrev()
 - hebrevc()
 - hex2bin()
 - htmlentities()
 - htmlspecialchars()
 - htmlspecialchars_decode()
 - html_entity_decode()
 - implode()
 - join()
 - lcfirst()
 - levenshtein()
 - localeconv()
 - ltrim()
 - md5()
 - md5_file()
 - metaphone()
 - money_format()
 - nl2br()
 - nl_langinfo()
 - number_format()
 - ord()
 - parse_str()
 - printf
 - quoted_printable_decode()
 - quoted_printable_encode()
 - quotemeta()
 - rtrim()
 - setlocale()
 - sha1()
 - sha1_file()
 - similar_text()
 - soundex()
 - sprintf()
 - sscanf()
 - strcasecmp()
 - strchr()
 - strcmp()
 - strcoll()
 - strcspn()
 - stripcslashes()
 - stripos()
 - stripslashes()
 - strip_tags()
 - stristr()
 - strlen()
 - strnatcasecmp()
 - strnatcmp()
 - strncasecmp()
 - strncmp()
 - strpbrk()
 - strpos()
 - strrchr()
 - strrev()
 - strripos()
 - strrpos()
 - strspn()
 - strstr()
 - strtok()
 - strtolower()
 - strtoupper()
 - strtr()
 - str_getcsv()
 - str_ireplace()
 - str_pad()
 - str_repeat()
 - str_replace()
 - str_rot13()
 - str_shuffle()
 - str_split()
 - str_word_count()
 - substr()
 - substr_compare()
 - substr_count()
 - substr_replace()
 - trim()
 - ucfirst()
 - ucwords()
 - vfprintf()
 - vprintf()
 - vsprintf()
 - wordwrap()
 
 - 
                        Array
- array()
 - array_change_key_case()
 - array_chunk()
 - array_column()
 - array_combine()
 - array_count_values()
 - array_diff()
 - array_diff_assoc()
 - array_diff_key()
 - array_diff_uassoc()
 - array_diff_ukey()
 - array_fill()
 - array_fill_keys()
 - array_filter()
 - array_flip()
 - array_intersect()
 - array_intersect_assoc()
 - array_intersect_key()
 - array_intersect_uassoc()
 - array_intersect_ukey()
 - array_keys()
 - array_key_exists()
 - array_key_first()
 - array_key_last()
 - array_map()
 - array_merge()
 - array_merge_recursive()
 - array_multisort()
 - array_pad()
 - array_pop()
 - array_product()
 - array_push()
 - array_rand()
 - array_reduce()
 - array_replace()
 - array_replace_recursive()
 - array_reverse()
 - array_search()
 - array_shift()
 - array_slice()
 - array_splice()
 - array_sum()
 - array_udiff()
 - array_udiff_assoc()
 - array_udiff_uassoc()
 - array_uintersect()
 - array_uintersect_assoc()
 - array_uintersect_uassoc()
 - array_unique()
 - array_unshift()
 - array_values()
 - array_walk()
 - array_walk_recursive()
 - arsort()
 - asort()
 - compact()
 - count()
 - current()
 - each()
 - end()
 - extract()
 - in_array()
 - key()
 - key_exists()
 - krsort()
 - ksort()
 - list()
 - natcasesort()
 - natsort()
 - next()
 - pos()
 - prev()
 - range()
 - reset()
 - rsort()
 - shuffle()
 - sizeof()
 - sort()
 - uasort()
 - uksort()
 - usort()
 
 - 
                        File
- basename()
 - chgrp()
 - chmod()
 - chown()
 - clearstatcache()
 - copy()
 - dirname()
 - diskfreespace()
 - disk_free_space()
 - disk_total_space()
 - fclose()
 - feof()
 - fflush()
 - fgetc()
 - fgetcsv()
 - fgets()
 - fgetss()
 - file()
 - fileatime()
 - filectime()
 - filegroup()
 - fileinode()
 - filemtime()
 - fileowner()
 - fileperms()
 - filesize()
 - filetype()
 - file_exists()
 - file_get_contents()
 - file_put_contents()
 - flock()
 - fnmatch()
 - fopen()
 - fpassthru()
 - fputcsv()
 - fputs()
 - fread()
 - fscanf()
 - fseek()
 - fstat()
 - ftell()
 - ftruncate()
 - fwrite()
 - glob()
 - is_dir()
 - is_executable()
 - is_file()
 - is_link()
 - is_readable()
 - is_uploaded_file()
 - is_writable()
 - is_writeable()
 - lchgrp()
 - lchown()
 - link()
 - linkinfo()
 - lstat()
 - mkdir()
 - move_uploaded_file()
 - parse_ini_file()
 - parse_ini_string()
 - pathinfo()
 - pclose()
 - popen()
 - readfile()
 - readlink()
 - realpath()
 - realpath_cache_get()
 - realpath_cache_size()
 - rename()
 - rewind()
 - rmdir()
 - set_file_buffer()
 - stat()
 - symlink()
 - tempnam()
 - tmpfile()
 - touch()
 - umask()
 - unlink()
 
 - 
                        Datetime
- checkdate()
 - date()
 - date_add()
 - date_create()
 - date_create_from_format()
 - date_date_set()
 - date_default_timezone_get()
 - date_default_timezone_set()
 - date_diff()
 - date_format()
 - date_get_last_errors()
 - date_interval_create_from_date
 - date_interval_format()
 - date_isodate_set()
 - date_modify()
 - date_offset_get()
 - date_parse()
 - date_parse_from_format()
 - date_sub()
 - date_sunrise()
 - date_sunset()
 - date_sun_info()
 - date_timestamp_get()
 - date_timestamp_set()
 - date_timezone_get()
 - date_timezone_set()
 - date_time_set()
 - getdate()
 - gettimeofday()
 - gmdate()
 - gmmktime()
 - gmstrftime()
 - idate()
 - localtime()
 - microtime()
 - mktime()
 - strftime()
 - strptime()
 - strtotime()
 - time()
 - timezone_abbreviations_list()
 - timezone_identifiers_list()
 - timezone_location_get()
 - timezone_name_from_abbr()
 - timezone_name_get()
 - timezone_offset_get()
 - timezone_open()
 - timezone_transitions_get()
 - timezone_version_get()
 
 - 
                        Filter
 - 
                        HTTP
 - 
                        cURL
- curl_close()
 - curl_copy_handle()
 - curl_errno()
 - curl_error()
 - curl_escape()
 - curl_exec()
 - curl_file_create()
 - curl_getinfo()
 - curl_init()
 - curl_multi_add_handle()
 - curl_multi_close()
 - curl_multi_errno()
 - curl_multi_exec()
 - curl_multi_getcontent()
 - curl_multi_info_read()
 - curl_multi_init()
 - curl_multi_remove_handle()
 - curl_multi_select()
 - curl_multi_setopt()
 - curl_multi_strerror()
 - curl_pause()
 - curl_reset()
 - curl_setopt()
 - curl_setopt_array()
 - curl_share_close()
 - curl_share_errno()
 - curl_share_init()
 - curl_share_setopt()
 - curl_share_strerror()
 - curl_strerror()
 - curl_unescape()
 - curl_version()
 
 - 
                        PDO
 - 
                        PDOStatement
 
文件系统函数
在编程语言中,我们避免不了要与文件打交道,比如要将本地文件上传至服务器,创建读取日志文件等,其中涉及了各种文件操作。在 PHP 中,我们可以使用其丰富的文件系统函数处理这些功能,它是数据存储的主要手段。
本章节列出截至PHP 7.3.6所有的文件系统函数以供参考。
下表以相关性排序。
| 函数名 | 描述 | 
|---|---|
| file_exists() | 检查指定的文件或目录是否存在,存在则返回TRUE,不存在则返回FALSE | 
| fopen() | 打开一个指定的文件或 URL。 如果 PHP 的allow_url_fopen未被打开,那么打开一个 URL 时fopen()调用失败 | 
| fread() | 读取指定长度的通过fopen()函数打开的文件内容 | 
| fwrite() | 将数据写入到指定文件,在写到指定长度的数据或者写完所有数据时停止运行 | 
| fputs() | 函数fwrite()的别名。将数据写入到指定文件,在写到指定长度的数据或者写完所有数据时停止运行 | 
| unlink() | 删除指定文件 | 
| fgetc() | 从文件指针处读取一个字符(英文字符),同时文件指针向后移动一位,如果遇到文件末尾则返回FALSE | 
| fgets() | 从文件指针处读取一行字符,直到遇到换行符、文件末尾或者函数参数列表中指定的长度($length - 1)后停止 | 
| fgetss() | 从打开的文件句柄中读取一行字符,并尝试过滤掉 HTML 和 PHP 标签,直到遇到换行符、文件末尾或者函数参数列表中指定的长度($length - 1)后停止 | 
| fgetcsv() | 从文件指针处读取一行字符,直到遇到换行符、文件末尾或者函数参数列表中指定的长度($length - 1)后停止,并对行中的 CSV 字段进行解析 | 
| fputcsv() | 将一个数组格式化为CSV后写入通过函数fopen()打开的文件句柄 | 
| fscanf() | 以特定格式来匹配已打开的文件句柄中的一行字符串,每个格式按空白符(包括制表符)隔开,最后返回按格式解析后的数组结果 | 
| ftruncate() | 把已打开的文件句柄截断为指定长度 | 
| file() | 将文件读入数组。返回以文件行号为索引的数组 | 
| feof() | 检测文件指针是否指向文件末尾(EOF) | 
| fpassthru() | 从当前文件指针开始,读取剩余的所有数据,并把结果写在输出缓冲区(直接输出结果) | 
| fseek() | 重新定位文件指针,定位值从$whence开始,单位为字节数,可以定位至文件末尾之后 | 
| ftell() | 返回当前文件句柄的指针位置 | 
| fstat() | 返回通过fopen()函数打开的文件句柄的本地文件的信息 | 
| rewind() | 将已打开的文件句柄指针重置至文件头 | 
| flock() | 为解决多进程对同一文件的读写冲突操作而产生(即使 PHP 多线程的支持度几乎为 0 )。它对一个文件进行简单的锁定/释放操作 | 
| tmpfile() | 以读写(w+)的形式创建一个没有文件内容、只有一个唯一的文件名的临时文件 | 
| fclose() | 关闭通过fopen()或fsockopen()函数打开的文件句柄 | 
| popen() | 打开一个指向进程的管道,只允许单向的读或者写 | 
| pclose() | 关闭使用popen()函数打开的文件进程句柄 | 
| file_get_contents() | 将文件整个(一次性)写入一个字符串 | 
| file_put_contents() | 将一个字符串写入文件 | 
| tempnam() | 在指定目录中,生成一个具有指定前缀的唯一性文件名的空白文件,并在成功时返回该文件名 | 
| dirname() | 返回文件所在目录 | 
| disk_free_space() | 获取一个本地目录或盘符所在磁盘的剩余可用空间 | 
| diskfreespace() | 函数disk_free_space()的别名。获取一个本地目录或盘符所在磁盘的剩余可用空间 | 
| disk_total_space() | 获取本地目录所在磁盘的总字节数 | 
| mkdir() | 创建一个目录 | 
| rmdir() | 删除一个指定的空目录 | 
| rename() | 对指定文件或目录进行重命名 | 
| move_uploaded_file() | 将通过HTTP POST上传的文件移动到新的位置 | 
| copy() | 复制一份文件到指定位置 | 
| basename() | 返回一个路径参数的基本文件名(不包含任何目录名称) | 
| realpath() | 返回指定路径的绝对路径 | 
| pathinfo() | 返回一个指定路径的文件信息的数组,包括其所在目录名、基本文件名、文件扩展名和文件名 | 
| filesize() | 返回指定文件的大小 | 
| filetype() | 获取指定文件的文件类型 | 
| fileowner() | 获取指定文件的所有者 ID | 
| filegroup() | 获取指定文件所在组的 ID 值 | 
| filemtime() | 返回指定文件的上一次修改时间 | 
| fileatime() | 返回指定文件的上一次访问时间 | 
| fileperms() | 获取指定文件的十进制权限值 | 
| filectime() | 返回指定文件的inode修改时间 | 
| fileinode() | 获取指定文件的inode编号 | 
| stat() | 返回一个文件的所有统计信息 | 
| chown() | 修改指定文件的所有者 ID | 
| chgrp() | 修改指定文件的所有者所在组的 ID | 
| chmod() | 修改指定文件的访问权限 | 
| touch() | 修改指定文件的访问时间和修改时间 | 
| umask() | 设置系统的umask掩码的值 | 
| is_dir() | 判断给定的路径是否为一个目录 | 
| is_executable() | 判断一个文件是否为可执行文件 | 
| is_file() | 判断一个文件是否为一个正常的文件 | 
| is_link() | 判断一个文件路径是否为一个符号链接 | 
| is_readable() | 判断指定的文件或目录是否可读 | 
| is_uploaded_file() | 检测指定文件是否是通过 HTTP POST 上传的 | 
| is_writable() | 判断指定文件是否可写 | 
| is_writeable() | 函数is_writable()的别名。判断指定文件是否可写 | 
| fnmatch() | 对比给定的文件名或字符串是否符合特定的模式 | 
| glob() | 匹配所有符合模式的文件路径,不进行缩写扩展或参数替代 | 
| parse_ini_file() | 解析一个ini配置文件 | 
| parse_ini_string() | 解析一个ini格式的配置字符串 | 
| link() | 建立一个硬链接 | 
| linkinfo() | 返回指定链接(路径)的设备ID信息。可用来验证该链接是否存在 | 
| symlink() | 建立一个指向目标路径的符号链接(类似于 Windows 系统下的快捷方式) | 
| readlink() | 返回一个符号链接指向的目标路径 | 
| lstat() | 返回文件或符号链接的统计信息 | 
| lchown() | 修改符号链接的所有者(owner)ID | 
| lchgrp() | 修改符号链接的所属组(group)ID | 
| readfile() | 读入一个文件并将其内容写入到输出缓冲(会立即输出) | 
| realpath_cache_size() | 获取真实路径在缓冲区的大小 | 
| realpath_cache_get() | 获取真实路径的缓存详情 | 
| set_file_buffer() | 函数stream_set_write_buffer()的别名。设置已打开文件的写入缓冲大小(单位:字节) | 
| fflush() | 将所有的缓冲内容输出到已打开的文件 | 
| clearstatcache() | 清除使用了stat()、lstat()等其他会缓存信息的函数造成的缓存 | 
在进行函数讲解之前,我们先了解几个概念:
- 句柄
- 英文名称
Handle,Windows 系统下用来识别被进程打开的文件对象的整数,类同于Linux/Unix系统下的文件描述符。 
 - 英文名称
 - 指针
- 引用对象的内存地址。
 
 umask掩码- 用以限制新文件的权限。在类 Unix 系统创建新目录时,可以指定访问权限,但新目录的实际权限为“设定权限”减去
umask掩码后的权限值。默认为0022。 
- 用以限制新文件的权限。在类 Unix 系统创建新目录时,可以指定访问权限,但新目录的实际权限为“设定权限”减去
 - 符号链接
- 类似于 Windows 系统下的快捷方式,具有数据内存的指向信息,删除符号链接不会影响到原始数据,而原始数据被删除后,符号链接失效。
 
 - 硬链接
- 同一块数据的不同名称。删除一个硬链接只是删除这个名字,但如果删除了一块数据的所有别名(硬链接),该数据就会被删除。
 
 - 缓冲
- 短时间内以先入先出的顺序保存和读取数据。
 
 
本参考手册的格式说明:
- 函数名
 - 定义
 - 语法
- 函数名
 - 参数列表:参数列表中,变量名前是该变量的数据类型,其中特殊的
mixed表示有多种可能的数据类型;使用方括号包裹的参数表示可选 - 返回类型:冒号后面是函数的标准返回类型
 
 - 参数说明
 - 示例
 - 延展阅读
- 与当前函数具有相关性、相似性的函数