PHP常用函数
字符串函数
(1)trim() 移除字符串两侧的空白字符和其他字符;
(2)strlen() 获取字符串的长度
(3)mb_strlen() 获取字符串长度(可指定字符编码,对中文字符串计算长度)
(4)substr()返回字符串的一部分;
substr ( string $string , int $start [, int $length ] )
(5)str_replace() 函数替换字符串中的一些字符(区分大小写)
str_replace($search,$replace, $subject,[$count]) count可选,对替换数进行计数
(6)substr_replace() 函数把字符串的一部分替换为另一个字符串
substr_replace(string,replacement,start,[length])
start 开始替换处 length 替换多少个字符
(7)substr_count(): 统计一个字符串,在另一个字符串中出现次数
substr_count(string,sub_string,start[可选],length[可选])
(8)str_repeat () 把字符串重复指定的次数
str_repeat(string,repeat)
(9)is_string() 检测变量是否是字符串;
(10)str_shuffle () 随机地打乱字符串中所有字符
(11)sprintf() 返回根据格式化字符串生成的字符串(通常用于获取分表后的数据表名)
(12)strstr() 查找字符串的首次出现,并返回字符串中剩余的部分。
stristr(string,search,before_search) before_search默认值为 "false" 的布尔值
(13)strchr(): strstr()的别名
(14)strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符
(15)strpos() 函数查找字符串在另一字符串中第一次出现的位置(区分大小写)
注释: 字符串位置从 0 开始,不是从 1 开始。
strpos(string,find,start) start可选。规定开始搜索的位置。
(16)strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
(17)addslashes 返回在预定义字符之前添加反斜杠的字符串
预定义字符是:单引号 双引号 反斜杠 NULL
(18)str_split(): 把字符串分割到数组中
(19)strrev(): 反转字符串
(20)parse_str(): 将字符串解析成变量 http_build_query()使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串。
parse_str("id=23&name=John%20Adams", $myArray);
(21)number_format(): 通过千位分组来格式化数字 输入
(22)strtolower(): 字符串转为小写
(23)strtoupper(): 字符串转为大写
(24)htmlentities(): 把字符转为HTML实体
(25)html_entity_decode($str)把HTML实体转换成预定义字符
(26)htmlspecialchars(): 预定义的字符转换为 HTML 实体。
(27)htmlspecialchars_decode($str);//把HTML实体转换成预定义字符
(28)strip_tags(): 剥去 HTML、XML 以及 PHP 的标签
(29)chr(): 从指定的 ASCII 值返回字符
echo chr(052); // ASCII 值返回对应的字符
(30)ord(): 返回字符串第一个字符的ASCII值
echo ord("hello"); 字符串第一个字符的 ASCII 值
(31)strcmp(): 区分大小写比较两字符串
(32)strcasecmp(): 不区分大小写比较两字符串
(33)iconv实现编码转换
(34)is_numeric() — 检测变量是否为数字或数字字符串
(35)gettype($var);返回变量的类型
htmlentities转换所有的html标记
htmlspecialchars只格式化& 、’、 “、 <、> 这几个特殊符号。
使用htmlentities不指定编码的话遇到中文会乱码
一、isset()和empty()函数有什么区别?
isset() 的定义
==检测变量是否已设置并且非 NULL==
empty() 的定义
==检查一个变量是否为空==
以下的东西被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
例子:
$a = "test";
var_dump(isset($a)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
$var = '';
var_dump(isset($var)); // TRUE
isset() 和 empty()的比较
$var = 0;
if (empty($var)) {
echo 1;
}//1
if (isset($var)) {
echo 2;
}//1
0、''、null之间相等关系
if('' == null && '' == 0 && 0 =='0')
echo true;
//返回结果 1;
if(null == '0' )
echo true;
//返回结果 untitled;
结论:' ' ,null , 0 ,'0'互相相等;'',null不等于'0'
数组函数
一、数组操作的基本函数
(1)array_unique($arr); //删除重复值,返回剩余数组
(2)shuffle($arr); // 将数组的顺序打乱
(3)array_values($arr); //返回数组中所有值,组成一个数组
(4)array_keys($arr); //获得数组的键名
(5)array_flip($arr); //数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
(6)array_search('PHP',$arr); //检索给定的值,并返回对应的键名 加true则是严格类型检查 数据类型和值都一致的元素
(7)array_reverse($arr); //将数组中的元素翻转
(8)in_array("apple", $arr); //搜索数组中是否存在指定的值,区分大小写
(9)array_key_exists("apple", $arr); // 检索给定的键名是否存在数组中
(10)array_count_values($arr); // 统计数组中所有值出现的次数
(11)range(): 创建并返回一个包含指定范围的元素的数组
(12)array_rand(): 从数组中随机抽取一个或多个元素,注意是键名!!!
(13)count(): 计算数组中的单元数目或对象中的属性个数
(14)compact(): 创建一个由参数所带变量组成的数组
(15)array_search() 在数组中查找一个值,返回一个键名,如果没找到,则返回 false。
(16)key(): 返回数组内部指针当前指向元素的键名
(17)current(): 返回数组中的当前元素(单元).
(18)next(): 把指向当前元素的指针移动到下一个元素的位置,并返回当前元素的值
(19)prev(): 把指向当前元素的指针移动到上一个元素的位置,并返回当前元素的值
(20)end(): 将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)
(21)reset(): 把数组的内部指针指向第一个元素,并返回这个元素的值
(22)list(): 用数组中的元素为一组变量赋值
(23)http_build_query($arr)//把关联数组转换成一个经过urlencode加密的URL eg:array["a"=>2];=>URL:a=2&
(24)unset($arr)//销毁此数组
(25)is_array($arr);//判断是否是数组【返回BOOL】
(26)join() 函数是 implode() 函数的别名
(27)extract()函数执行数组转为变量,即它将数组键转换为变量名称,将数组值转换为变量值。 compact函数变量转数组
二、数组的分段和填充
(1)array_slice($arr, 0, 3); //在数组中根据条件取出一段值,并返回,此函数忽略键名(数组的分段)
(2)array_splice($arr, 0, 3,array("black","maroon")); //根据条件从数组中移除元素,并用新元素取代它,返回的序列从原数组中删除
(3)array_chunk($arr, 3, TRUE); //把一个数组分割为新的数组块,TRUE为保留原数组的键名(分割多个数组)
四、数组与栈,列队
(1)array_push($arr, "apple", "pear"); //将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数
(2)array_pop($arr); // 将数组栈的最后一个元素弹出并返回(出栈)
(3)array_shift($arr); //数组中第一个元素弹出并返回(长度减1,其他元素向前移动一位,数字键名改为从零计数,文字键名不变)
(4)array_unshift($arr,"a",array(1,2)); //在数组的开头插入一个或多个元素
六、数组的排序
(1)sort($arr); //由小到大,忽略键名
(2)rsort($arr); //由大到小,忽略键名
(3)asort($arr); //由小到大,保留键名
(4)arsort($arr); // 由大到小,保留键名
(5)ksort($arr); //按照键名正序排序
(6)krsort($arr); // 按照键名逆序排序
七、数组的计算
(1)array_column(array,column_key) 返回输入数组中某个单一列的值
(2)array_sum($arr); //对数组内部的所有元素做求和运算(数组元素的求和)
(3)array_merge($arr1, $arr2); //合并两个或多个(相同字符串键名,后面覆盖前面,相同的数字键名,后面的附加到后面)
(4)array_diff($arr1, $arr2); //返回差集结果数组 array_diff_assoc($arr1, $arr2, $arr3); //返回差集结果数组,键名也做比较
(5)array_intersect($arr1, $arr2); //返回两个或多个数组的交集数组 array_intersect_assoc($arr1, $arr2); //返回交集结果数组,键名也做比较
八、回调函数
(1)array_filter($arr,"function");//用回调函数过滤数组中的元素 把$arr放到函数function中处理,【返回判断为TRUE的数据组成新数组,键值保留】
(2)array_walk($arr,"function"[,"data"]);//把$arr放到function(&$v,$k,$data)中处理【返回值为bool】
(3)array_map("function",$arr,$arr2,$arr3,....);//把所有数组返回到回调函数统一处理,【返回数组】
九、array_merge_recursive()与array_merge()区别
array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。
十、array_walk 和 array_map的区别
array_map 有Array返回值,
结果导向:通过回调函数对当前数组A的值进行处理后,将被处理的值放到一个新的数组B中,并返回该新数组B,原数组A不变。
array_walk 有Boolean返回值,
过程导向:通过回调函数对当前数组A的值进行处理,处理的结果可以通过 引用 来改变A,如果没有引用,则A数组不变。
时间函数
(1)date() 格式化一个本地时间/日期。
(2)getdate() 取得日期/时间信息。
(3)date_default_timezone_set() 设定默认时区。
(4)date_default_timezone_get() 返回默认时区。
(5)time(): 返回当前的 Unix 时间戳
(6)mktime() 返回一个日期的 Unix时间戳。
(7)strtotime() 将任何字符串的日期时间描述解析为 Unix 时间戳
(8)microtime(): 返回当前 Unix 时间戳和微秒数
(9)getdate(): //获取当前时间,【返回一个数组,参数年,月,日,小时等都有】
date()
中参数
d: 几日,两位数字,若不足则补零;从"01"至"31"
j: 几日,不足不被零;从"1"至"31"
h: 12小时制的小时,从"01"至"12"
H: 24小时制的小时,从"00"至"23"
w: 数字型的星期几,从"0(星期天)"至"6(星期六)"
t: 指定月份的天数,从"28"至"31"
z: 一年中的第几天;从"1"至"366"
L 是否为闰年 如果是闰年为 1,否则为 0
文件系统函数
(1) fopen() 打开文件或者 URL
(2) fgets() ; 从文件指针中读取一行 注:file_get_contents()也是读取文件
(3) fgetc(): 从文件指针中读取字符
(4) file(): 把整个文件读入一个数组中
(5) file_get_contents(): 将整个文件读入一个字符串
(6) file_put_contents(file,string):将一个字符串写入文件
(7) fwrite(file,string) ; 写入文件 注:file_put_contents()同样可以写入文件
(8) flock(): 轻便的执行文件锁定 LOCK_EX - 独占锁定 LOCK_UN - 释放一个共享锁定或独占锁定
(9) fclose() 关闭一个已打开的文件指针 关闭文件句柄
(10) basename(): 返回文件名
(11) dirname(): 返回文件的路径(目录部分)
(12) pathinfo(): 返回文件路径的信息 ["dirname"目录名] ["basename"文件名] ["extension"文件后缀]
(13) rename(oldname , newname) 移动 / 重命名文件
(14) copy() 复制文件
(15) vim 或 touch 创建文件
(16) unlink() 删除文件
(17) fileatime() 获取文件上次访问的时间
(18) filemtime() 获取文件上次修改的时间
(19) filectime(): 获取文件的创建时间
(20) filesize() 获取文件大小
(21) filetype() 获取文件类型
(22) state() 获取文件详细信息
(23) is_dir() 判断是否是目录
(24) feof(): 检测文件指针是否到了文件结束的位置
(25) file_exists():检查文件或目录是否存在
(26) is_uploaded_file():判断文件是否是通过 HTTP POST上传的
(27) move_uploaded_file(): 将上传的文件移动到新位置
(28) is_readable(): 判断给定文件是否可读
(29) is_writable(): 判断给定文件是否可写
(30) is_executable(): 判断给定文件是否可执行
(31) fread(file,length) 函数读取文件
(32) readfile() 函数读取一个文件,并写入到输出缓冲
文件下载
(31)header('content-disposition:attachment;filename='.basename($filename));//表示附件方式下载
(32)header('content-length:'.filesize($filename));
(33)readfile($filename);
文件夹函数
(1)opendir() 打开目录
(2)readdir() 读取目录
(3)rmdir() 删除目录
(4)closedir() 关闭目录句柄
(5)mkdir() 创建目录
(6)dirname() 返回路径中的目录部分
(7)getcwd() 取得当前工作目录
(8)scandir() 列出指定路径中的文件和目录
数学函数
abs(): 求绝对值
ceil(): 向上取整
floor(): 向下取整
round(): 浮点数四舍五入
pow(x,y): 返回 x 的 y 次方
sqrt(): 求一个数平方根
max(): 求最大值
min(): 求最小值
mt_rand() or mt_rand(min,max): 更好的随机数,随机返回范围内的值
常量:
__LINK__ //文件中的当前行号。
__FILE__ //文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__DIR__ //文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录,它等价于 dirname(__FILE__)。
__FUNCTION__ //函数名称。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ //类的名称。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__METHOD__ //类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ //当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP 5.3.0 新增)
URL处理函数
(1)urlencode($url)//对该URL进行编码;原因:防止乱码,解决空格的字符不能传递问题,form也是此编码格式传递
(2)urldecode($url)//对该URL进行解码
(3)parse_url($url)//返回该URL的所有信息,[scheme协议][host域名] [path路径(带/)][query参数] 【返回含信息的数组】
(4)pathinfo($url)//["dirname"目录名] ["basename"文件名] ["extension"文件后缀]【返回含信息的数组,下标不同】
(5)getcwd()和 __DIR__ 返回的是文件所在的绝对路径但是没有文件自身的名字在内。
(6)__FILE__则是返回的是文件所在的绝对路径但是有文件自身的名字在内
JSON
(1)json_encode($data);//对变量进行JSON编码
(2)json_decode($data)//对JSON格式的字符串进行解码
其他
$_SERVER
函数
<?php
// 当前页面的URL地址 http://example.com/foo/bar.php 的脚本中使用 $_SERVER['PHP_SELF'] 将得到 /foo/bar.php。
echo $_SERVER['PHP_SELF']."<br />";
//链接到当前页面的前一页面的 URL 地址:
echo $_SERVER['HTTP_REFERER']."<br />";
//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php
echo $_SERVER["SCRIPT_FILENAME"]."<br />";
//正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"]."<br />";
//查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2
echo $_SERVER["QUERY_STRING"]."<br />";
//当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"]."<br />";
$_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别
http://locahost/php/index.php/test/foo?username=hello
$_SERVER['PHP_SELF'] 得到:/php/index.php/test/foo
$_SERVER['SCRIPT_NAME'] 得到:/php/index.php
$_SERVER['REQUEST_URI'] 得到:/php/index.php/test/foo?username=hello
?>
-
intval() 函数用于获取变量的整数值
-
sleep(10)//延迟代码执行若干秒
-
serialize()//返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
-
unserialize()//对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
-
ini_set—设置一个配置选项的值
-
ini_get()-获取配置选项的值
-
filter_var()函数使用指定的过滤器来过滤变量;它可用于验证和过滤数据。
魔术方法
__construct() 实例化类时自动调用。
__destruct() 类对象使用结束时自动调用。
__set() 在给未定义的属性赋值的时候调用。
__get() 调用未定义的属性时候调用。
__isset() 使用isset()或empty()函数时候会调用。
__unset() 使用unset()时候会调用。
__sleep() 使用serialize序列化时候调用。
__wakeup() 使用unserialize反序列化的时候调用。
__call() 调用一个不存在的方法的时候调用。
__callStatic()调用一个不存在的静态方法是调用。
__toString() 把对象转换成字符串的时候会调用。比如 echo。
__invoke() 当尝试把对象当方法调用时调用。
__set_state() 当使用var_export()函数时候调用。接受一个数组参数。
__clone() 当使用clone复制一个对象时候调用。