【内置】总结持续更新--php常用内置函数,总结--php内置函数
使用思路:根据功能找函数,如 要做个文件管理器的话,首先确定使用和目录/文件相关的函数,画出来html页面看都有什么功能,再一次分析这些功能的实现
常量
手册中的位置:附录-》保留字列表-》预定义常量
1、PHP_EOL //换行
2、PHP_SAPI //判断是使用命令行还是浏览器执行的,如果 PHP_SAPI==’cli’ 表示是在命令行下执行 和php_sapi_name()函数一样
详解请看http://blog.csdn.net/chenhualeguan/article/details/46402807
3、PHP_OS //判断当前的操作系统,win或linux字符串
substr — 截取英文字符串
mb_substr() — 截取中文字符串
1、explode — 使用一个字符串分割另一个字符串(字符串转数组)
2、strtok — 分割字符串
2、trim — 删除字符串开头和结尾的空白字符(或其他字符)
3、md5 — 计算字符串的MD5散列值(加密)更安全的方法用.拼接个字符串在加密
4、sha1 — 计算字符串的sha1散列值(加密)
9、strtolower — 将字符串转化为小写
10、strtoupper — 将字符串转化为大写
11、strrev — 将字符串倒过来输出
12、number_format —以千位分隔符方式格式化一个数字
13、ucfirst— 首字母转换为大写
14、chr — 指定的ASCII码和十进制互相转换(输入asii码或十六进制返回十进制的数字)
15、substr($str,0,strrpos($str,'&')); //截取最后一个&之前的字符串
16、去掉最后一个字符
- substr($str,0,strlen($str)-1);
- substr($str, 0, -1)
- rtrim($str, ",") //去掉最后一个逗号
str_pad — 使用另一个字符串填充字符串为指定长度
str_repeat — 重复一个字符串
搜索替换:
nl2br(); //将分行符"\r\n"转义成HTML的换行符"<br />"
str_replace — 子字符串替换
示例:
substr_replace — 替换字符串的子串
计算:
7、strlen — 获取英文字符串长度
mb_strlen()— 获取中文字符串长度
8、substr_count — 计算字串出现的次数
9、strcmp — 判断俩个字符串是否相等。返回值3种状态
位置:
1、stripos — 查找字符串首次出现的位置(不区分大小写)
2、strstr — 查找字符串的首次出现
3、stristr -- strstr查找字符串首次出现的位置,并忽略被查找字符串的大小写(stristr第2个参数忽略大小写)
3、strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
4、strrchr — 查找指定字符在字符串中的最后一次出现
5、strripos — 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
过滤js:
$preg = "/<script[\s\S]*?<\/script>/i"; //过滤正则 $value_str = preg_replace($preg,"",$str,3); //第四个参数中的3表示替换3次,默认是-1,替换全部
效验:正整数,负数,浮点数后2俩位
preg_match('/^[0-9]+(.[0-9]{1,2})?$/',$data['money']); //返回0或1
转义:
1、stripcslashes — 反引用一个使用 addcslashes() 转义的字符串
2、stripslashes — 去掉字符串中的\反斜线
3、addslashes — 使用反斜线引用(转义)字符串
4、htmlspecialchars -- 把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:
字符串转数组:
1、str_split — 将字符串转换为数组
去掉html标签:
富文本编辑器,取数据时
1、strip_tags — 从字符串中去除 HTML和PHP标记
2、html_entity_decode —将所有HTML实体转换为它们的适用字符
3、strip_tags(html_entity_decode(存数据的时候去掉标签和实体));
打印:
Print 输出字符串
Printf 输出格式化字符串
Sprintf 把字符串进行多种类型的格式化
Print_r 输出格式化数组或对象
var_dump 打印出来的带结构更方便看
Var_export 第2个参数为true直接返回该变量的值
签名:
1、openssl_verify — 验证签名
2、openssl_decrypt — 解密数据
3、openssl_encrypt — 加密数据
数组
注意:带&的,会改变数据的本身。因为&是引用传递,使用的是同一个内存空间range — 建立一个包含指定范围单元的数组
array_keys — 返回数组中部分的或所有的key
array_values — 返回数组中所有的value
array_chunk — 将一个一维数组,按元素个数进行切割,返回分割完的二维数组
array_merge — 输2参数是合并数组。输1个参数是归整索引
array_merge_recursive -- 将2个数组合并成一个数组。并不是二维数组
extract($this->assign); //将一维数组打散,将数组中的每一个key变成一个单独的变量
array_reverse — 将数组倒过来输出
shuffle — 将数组打乱
array_map--将数组中的value取出,通过回调函数(自定义的函数),自己处理
array_walk — 使用回调函数(自定义的函数)对数组中的每个元素做回调处理
array_filter — 用回调函数(自定义的函数)过滤数组中的单元
数组转字符串:
1、implode — 将一个一维数组的值转化为字符串
搜索:
1、array_search — 在数组中搜索给定的值,如果成功则返回相应的键名
2、array_slice — 从数组中取出一段
3、key — 从关联数组中取得键名
4、in_array -- 检查数组中是否存在某个值
5、array_key_exists //检测该字符串是否在一维数组中
填充:
1、array_fill_keys — 使用指定的键和值 填充数组
2、array_pad — 用值将数组填补到指定长度
5、list — 把数组中的值赋给一些变量
移除:
1、array_shift — 返回 删除数组的第一个元素
3、array_unique — 移除一维数组中重复的value
4、array_splice($temp, $del, 1); //$temp从哪个数组中删除,$del要删除哪个位置的key,删除1位。
注意:返回的是被删除的元素,不要打印返回值。直接在下面打印$temp就是删除后的数组
队列:
单向队列:只能从头进,从尾出
双向队列:头尾都可进入
array_unshift — 将一个或多个value追加到数组的开头(头入栈)
array_shift — 将数组开头的单元移出数组 (头出栈)
array_push — 将一个或多个value追加到数组的末尾(尾入栈)
array_pop — 返回 移出数组的最后一个元素(尾出栈)
位置:
1、current — 返回数组中的当前key(还有next下一个函数等...)
计算:
1、count — 计算数组中的key或对象中属性的,总个数
2、array_sum — 计算数组中所有value的和
3、array_product — 计算数组中所有值的乘积
4、array_count_values — 统计数组中所有的value出现的次数
5、array_diff — 计算数组的差集,返回数组2中没有数组1的values
6、array_intersect — 计算数组的交集,返回俩个数组中的共同values
7、array_column — 返回多维数组或结果集中,指定的一列(指定的下标,就是多维数组取某一列的值)
排序:
1、array_multisort — 对多个数组或多维数组进行排序
2、asort —对数组的value进行排序,并保持value和key的对应关系
3、arsort — 对数组进行逆向排序并保持索引关系
4、krsort — 对数组按照键名逆向排序
5、ksort — 对数组按照键名排序
6、rsort — 对数组逆向排序
7、sort — 对数组排序
时间
date — 格式化一个本地时间/日期
getdate — 取得日期/时间信息(和date差不多,date返回字符串,这个返回数组,更方便处理
gettimeofday — 取得当前时间(主要是返回秒的数组)
time — 返回当前的 Unix时间戳
mktime — 取得一个设定日期的 Unix时间戳
strtotime — 将英文字母 转换为 时间戳
microtime — 返回当前 微秒数 和 Unix时间戳
date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认
checkdate — 效验(月,日,年)是否合法
date_sunrise — 计算,某日与某地的,日出时间
date_sunset — 计算,某日与某地的,日落时间
文件/目录
fopen — 打开文件或者 URL
fwrite — 写入文件(可安全用于二进制文件)
fread — 读取文件(可安全用于二进制文件)
fgets — 从文件指针中读取一行
fgetc — 从文件指针中读取一个字符
fclose — 关闭一个已打开的文件指针
file_get_contents — 将整个文件读入一个字符串
file_put_contents — 将一个字符串写入文件
file — 把整个文件读入一个数组中
readfile — 输出文件,加上header头,可以下载
parse_ini_file — 解析一个配置文件,传配置文件,以数组形式返回
路径:
realpath — 返回规范化的绝对路径名
目录:
pathinfo — 返回文件路径的信息(包含目录名和文件名)
dirname — 获取路径中的目录名
basename — 获取路径中的文件名
getcwd — 取得当前所在的目录
chdir — 切换目录
scandir — 列出 指定路径中的 文件和目录
dir — 返回一个 Directory 类实例
rename — 重命名一个文件或目录
mkdir — 新建目录
rmdir — 删除目录
opendir — 打开目录
readdir — 从目录句柄中读取条目,返回目录中下一个文件的文件名
rewinddir — 倒回目录句柄
closedir — 关闭目录
计算大小:
filesize — 取得文件大小
disk_free_space — 磁盘剩余空间
disk_total_space — 返回一个目录的磁盘总大小
时间:
filectime — 取得文件索引上次被修改的时间(其中inode (索引节点)用来存放档案及目录的基本信息包含时间、档名、使用者及群组等)
fileatime — 取得文件的上次访问时间(上次被读取)
filemtime —取得文件内容上次被修改的时间(上次被写入)
其他:
copy — 拷贝文件(可以带路径)
unlink — 删除文件(可以带路径)
filetype — 取得文件类型
flock — 文件锁
位置:
ftell — 返回文件指针读/写的位置
fseek — 在文件指针位置
rewind — 文件指针指向头
move_uploaded_file — 将上传的文件移动到新位置
示例:
数学
1、ceil — 进一法取整。有小数部分则进一位,没小数还取啥整啊
2、floor —舍去法取整。整数是几就是几,因为他直接舍去了小数位
3、round —对浮点数进行四舍五入。第2个参数是小数部分第几位开始四舍五入
4、intval — 获取变量的整数值
5、sprintf("%.2f",rand(0.1,100)/100);//0-1之间的随机数,保留小数点2位6、mt_rand —生成更好的随机数(和rand()的主要区别是,生成速度比rand()快4倍)7、uniqid —生成一个唯一ID
程序执行函数
1、exec — 执行一个外部程序
判断
标量:
is_bool — 检测变量是否是布尔型
is_float — 检测变量是否是浮点型
is_int — 检测变量是否是整数
is_string — 检测变量是否是字符串
is_numeric — 检测变量是否为数字或数字字符串
is_scalar — 检测变量是否是一个标量
复合:
is_object — 检测变量是否是一个对象
is_array — 检测变量是否是数组
特殊:
is_resource — 检测变量是否为资源类型
is_null — 检测变量是否为 NULL
文件目录:
file_exists — 检查文件或目录是否存在
is_readable — 判断给定文件名是否可读
is_writable — 判断给定的文件名是否可写
is_executable — 判断给定文件名是否可执行
is_dir — 判断给定文件名是否是一个目录
is_uploaded_file —判断文件是否是通过HTTP POST上传的
类&&函数:
is_callable — 检测参数是否为合法的可调用结构function_exists — 如果给定的函数已经被定义就返回 TRUE(函数是否存在)
示例:嵌套函数
class_exists — 检查类是否已定义
其他:
interface_exists — 检查接口是否已被定义
isset — 检测变量是否存在
define --定义常量
defined — 检查某个名称的常量是否存在
declare(strict_types=1); -- 该指令影响全部的函数调用。参考:http://blog.csdn.net/beyond__devil/article/details/52584082
选项和信息
1、ini_set — 设置一个配置选项的值(设置配置文件的)
注意:设置指定配置选项的值。这个选项会在脚本运行时保持新的值,并在脚本结束时恢复。 并不是所有选项都可以修改2、ini_get — 获取一个配置选项的值
3、set_time_limit —设置脚本最大执行时间(如果设置为0,没有时间方面的限制)
注意:
设置允许脚本运行的时间,单位为秒。如果超过了此设置,脚本返回一个致命的错误。默认值为30秒,或者是在php.ini的max_execution_time被定义的值,如果此值存在。
4、ignore_user_abort — 设置客户端断开连接时是否中断脚本的执行(设置为true)
5、set_include_path — 设置 include_path 配置选项
//如果没有这个函数,每次引入include('a/test1.php');都需要写全路径,引入多个会很麻烦
//有了这个函数,先设置路径set_include_path('a');引入时直接引入include('test1.php');文件即可
6、get_include_path — 获取 include_path 配置选项
7、restore_include_path — 还原 include_path 配置选项的值8、putenv — 设置环境变量的值php_ini_loaded_file — 取得已加载的 php.ini 文件的路径(返回此刻使用的php.ini的路径)
Session
1、session_set_cookie_params — 设置会话 cookie 参数(本函数会修改运行期 ini 设置值,有int_set的功能,可以通过 ini_get() 函数获取这些值)
注意:
Cookie 参数可以在 php.ini 文件中定义,本函数仅在当前脚本执行过程中有效。 因此,如果要通过函数修改 cookie 参数,需要对每个请求都要 在调用 session_start() 函数之前调用session_set_cookie_params() 函数。
2、session_write_close - 写会话数据和结束会话注意:会话数据通常是在脚本终止后存储的,不需要调用session_write_close(),但是由于会话数据被锁定以防止并发写入,所以任何时候只有一个脚本可以在会话上运行。将帧集与会话一起使用时,由于此锁定,您将体验逐帧加载的帧。只要完成对会话变量的所有更改,就可以通过结束会话来缩短加载所有帧所需的时间。
session_destroy — 删除一个会话中的全部数据
session_set_save_handler — 设置用户自定义会话存储函数
错误处理和日志记录
1、error_reporting — 设置应该报告何种 PHP 错误(此也为php.ini文件的其中一个配置项)
注意:在运行时设置error_reporting 指令。 PHP 有诸多错误级别,使用该函数可以设置在脚本运行时的级别
降低PHP的错误级别error_reporting(E_ERROR | E_PARSE );
2、error_get_last -- 获取最后发生的错误。返回了一个关联数组,描述了最后错误的信息,以该错误的 "type"、 "message"、"file" 和 "line" 为数组的键。
注意:如果该错误由 PHP 内置函数导致的,"message"会以该函数名开头。 如果还没有错误则返回NULL
封装示例:
error_reporting(E_ALL); //报告所有错误
//参数都是回调函数 set_error_handler([__CLASS__, 'appError']); //错误,设置一个用户定义的错误处理函数 set_exception_handler([__CLASS__, 'appException']); //异常,设置一个用户定义的异常处理函数 register_shutdown_function([__CLASS__, 'appShutdown']); //异常中止。callback在脚本执行完成或调用exit()后 注册要执行的a3、error_log — 发送错误信息到某个地方
编码
iconv('utf-8', 'gbk//TRANSLIT', $str); //生成二维码的时候,图片名字,汉字乱码
base64_encode — 使用 MIME base64 对数据进行编码
base64_decode — 对使用 MIME base64 编码的数据进行解码
json_encode —对变量进行 JSON编码
json_decode — 对 JSON 格式的字符串进行编码
urlencode — 编码 URL 字符串
urldecode — 解码已编码的 URL 字符串
http_build_query — 生成 URL-encode 之后的请求字符串(将 数组或对象 转换成get请求参数的格式)
Ip
ip2long — 将一个IPV4的字符串互联网协议转换成数字格式
long2ip — 将长整数地址转换为(IPv4)Internet标准点格式的字符串
性能
1、memory_get_usage — 返回分配给 PHP 的内存量
Demo var_dump(memory_get_usage());
变量处理
1、serialize —返回的是一个字符串。序列化产生一个可存储于任何地方的值,这有利于存储或传递 PHP的值,同时不丢失其类型和结构。
2、unserialize --已序列化的字符串变回 PHP的值
3、intval — 获取变量的整数值
4、settype — 设置变量的类型
5、gettype — 获取变量的类型
其他
parse_url — 解析 URL,返回其组成部分
sleep — 延缓执行
示例:
filter_var--使用特定的过滤器过滤一个变量
案例:
filter_var($email,FILTER_SANITIZE_EMAIL); //待过滤的变量,过滤规则是一个常量
类和对象的函数
1、define -- 定义一个常量注意:该常量是全局的。如果是在类中用const定义,那是局部的,因为他会受到命名空间的影响2、func_num_args - 返回传递给函数的参数个数
func_get_args — 返回一个包含函数参数列表的数组
func_get_arg — 返回参数列表的某一项
示例:
call_user_func — 第一个参数为回调函数,第2个参数传给回调函数的参数
示例:使用系统函数如md5(); 7行写'md5'
如果回调有多个形参,传参时实参也写多个,用逗号隔开
call_user_func_array — 第一个参数为回调函数,第2个参数传给回调函数的参数(该参数为数组)
示例:
超全局变量
$_SERVER
//$_SERVER相关常用 echo $_SERVER['HTTP_HOST']."<br />"; //获取主机或域名 echo $_SERVER['PHP_SELF']."<br />"; //获取网页地址 echo $_SERVER["QUERY_STRING"]."<br />"; //获取url参数 ?后面的那一串,有可能是空 echo $_SERVER['HTTP_REFERER']."<br />"; //获取代理ip。上级请求的页面,有可能是空,直接通过url访问 //获取完整的url echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; //包含端口号的完整url echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; //只取路径 echo $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];1、$_SERVER['SERVER_ADDR']; //服务器ip
2、$_SERVER['REMOTE_ADDR']; //客户端ip
3、$_SERVER['SERVER_NAME']; //服务器名称
4、$_SERVER['REQUEST_TIME']; //请求时间
5、$_SERVER['HTTP_USER_AGENT']; //头信息的agent信息
6、$_SERVER['REQUEST_URI']; //请求的url
7、$_SERVER['PATH_INFO']; //处理框架的路由等。抓url中地址路径部分
杂谈
1、在框架中声明变量,就给该变量套个{}
2、心跳 其实就是浏览器-》定时请求 服务器-》然后更新 最后在线时间-》然后后端统计下 最近在线的人数
4、xss攻击<script>alert('123');</script>
PHP之友评论