array_key_exists($key, $arr)

判断数组中是否存在某个键名或某个索引

filter_var($value, $filter, $option)

使用特定的过滤器过滤一个变量

  1. //判断是否是IP
  2. filter_var($IP, FILTER_VALIDATE_IP)
  3. //判断是否是邮箱
  4. filter_var($IP, FILTER_VALIDATE_EMAIL)

PHP Filters

ID 名称 描述
FILTER_CALLBACK 调用用户自定义函数来过滤数据。
FILTER_SANITIZE_STRING 去除标签,去除或编码特殊字符。
FILTER_SANITIZE_STRIPPED “string” 过滤器的别名。
FILTER_SANITIZE_ENCODED URL-encode 字符串,去除或编码特殊字符。
FILTER_SANITIZE_SPECIAL_CHARS HTML 转义字符 ‘“<>& 以及 ASCII 值小于 32 的字符。
FILTER_SANITIZE_EMAIL 删除所有字符,除了字母、数字以及 !#$%&’*+-/=?^_`{|}~@.[]
FILTER_SANITIZE_URL 删除所有字符,除了字母、数字以及 $-_.+!*’(),{}|\\^~[]`<>#%”;/?:@&=
FILTER_SANITIZE_NUMBER_INT 删除所有字符,除了数字和 +-
FILTER_SANITIZE_NUMBER_FLOAT 删除所有字符,除了数字、+- 以及 .,eE。
FILTER_SANITIZE_MAGIC_QUOTES 应用 addslashes()。
FILTER_UNSAFE_RAW 不进行任何过滤,去除或编码特殊字符。
FILTER_VALIDATE_INT 在指定的范围以整数验证值。
FILTER_VALIDATE_BOOLEAN 如果是 “1”, “true”, “on” 以及 “yes”,则返回 true,如果是 “0”, “false”, “off”, “no” 以及 “”,则返回 false。否则返回 NULL。
FILTER_VALIDATE_FLOAT 以浮点数验证值。
FILTER_VALIDATE_REGEXP 根据 regexp,兼容 Perl 的正则表达式来验证值。
FILTER_VALIDATE_URL 把值作为 URL 来验证。
FILTER_VALIDATE_EMAIL 把值作为 e-mail 来验证。
FILTER_VALIDATE_IP 把值作为 IP 地址来验证。

is_array()

检测变量是否是数组

isset()

检测变量是否设置; 用于检测一个或多个变量是否设置,如果被检测的变量存在则返回 TRUE,否则返回 FALSE

empty()

检测一个变量是否为空; 如果被检测的变量为空则返回 TRUE,否则返回 FALSE 。

defined()

检测一个给定的常量是否被定义; 如果被检测的常量已定义则返回 TRUE,否则返回 FALSE。

count() 返回数组中元素的数目。

count(array,mode);

参数 描述
array 必需。规定要计数的数组。
mode 可选。规定函数的模式。可能的值:
- 0 - 默认。不计算多维数组中的所有元素。
- 1 - 递归地计算数组中元素的数目(计算多维数组中的所有元素)。

ssert()用来判断一个表达式是否成立。返回true or false;

array_fill()函数用键值填充数组。

array_fill() 函数用给定的值填充数组,返回的数组有 number 个元素,值为 value。返回的数组使用数字索引,从 start 位置开始并递增。如果 number 为 0 或小于 0,就会出错。

arrayfill(_index,number,value);

参数 描述
index 必需。被返回数组的第一个索引。
number 必需。规定要插入的元素数。
value 必需。规定供填充数组所使用的值。


array_values()返回一个包含给定数组中所有键值的数组,但不保留键名。

提示:被返回的数组将使用数值键,从 0 开始并以 1 递增。

array_keys()返回包含数组中所有键名的一个新数组。

如果提供了第二个参数,则只返回键值为该值的键名。
如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。

arraykeys(_array,value,strict)

参数 描述
array 必需。规定数组。
value 可选。您可以指定键值,然后只有该键值对应的键名会被返回。
strict 可选。与 value 参数一起使用。可能的值:
- true - 返回带有指定键值的键名。依赖类型,数字 5 与字符串 “5” 是不同的。
- false - 默认值。不依赖类型,数字 5 与字符串 “5” 是相同的。

array_merge()把一个或多个数组合并为一个数组。

提示:您可以向函数输入一个或者多个数组。
注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
注释:如果您仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引(参见下面的实例 1)。
提示:该函数与 array_merge_recursive() 函数之间的不同是在处理两个或更多个数组元素有相同的键名的情况。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

arraymerge(_array1,array2,array3…)

参数 描述
array1 必需。规定数组。
array2 可选。规定数组。
array3 可选。规定数组。

array_diff()返回两个数组的差集数组。

该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。
在返回的数组中,键名保持不变。

array_diff(array1,array2,array3…);
array1 必需。与其他数组进行比较的第一个数组。
array2 必需。与第一个数组进行比较的数组。
array3,… 可选。与第一个数组进行比较的其他数组。

提示:可用一个或任意多个数组与第一个数组进行比较。
注释:仅有值用于比较。

返回值:
返回差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键值。

intval()获取变量的整数值,允许以使用特定的进制返回。默认10进制

注:如果参数为整数,则不做任何处理。
intval (var, base)
参数列表:

参数 描述
var 必须。可以是任何标量类型。 intval() 不能用于数组 或 对象(类)。在此我得提一下标量类型包含四种:boolean(布尔型)integer(整型) float(浮点型, 也称作 double) string (字符串)
base 可选。转化所使用的进制,默认10进制如果 base 是 0,通过检测 var 参数的格式来决定使用的进制:如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制如果字符串以 “0” 开始,使用 8 进制其他使用 10 进制

for example:
echo intval(“0x1a”, 0), “\n”; // 使用16进制。 结果 “26”
echo intval(“057”, 0), “\n”; // 使用8进制。 结果 “47”
echo intval(“57”),”\n”; // 使用10进制。结果57
echo intval(“42”, 0), “\n”; // 结果 “42”


is_numeric() 检测变量是否为数字或数字字符串

bool isnumeric ( mixed $var )
如果 _var
是数字和数字字符串则返回 TRUE,否则返回 FALSE


number_format()格式化数字

<?php
echo number_format(“5000000”).”
“;
echo number_format(“5000000”,2).”
“;
echo number_format(“5000000”,2,”,”,”.”);
?>
number_format() 函数通过千位分组来格式化数字。
注释:该函数支持一个、两个或四个参数(不是三个)。

numberformat(_number,decimals,decimalpoint,separator)

参数 描述
number 必需。要格式化的数字。
如果未设置其他参数,则数字会被格式化为不带小数点且以逗号(,)作为千位分隔符。
decimals 可选。规定多少个小数。如果设置了该参数,则使用点号(.)作为小数点来格式化数字。
decimalpoint 可选。规定用作小数点的字符串。
separator 可选。规定用作千位分隔符的字符串。仅使用该参数的第一个字符。比如 “xxx” 仅输出 “x”。
注释:如果设置了该参数,那么所有其他参数都是必需的。

explode()把字符串打散为数组。

注释:”separator“ 参数不能是空字符串。
注释:该函数是二进制安全的。

explode(separator,string,limit)

参数 描述
separator 必需。规定在哪里分割字符串。
string 必需。要分割的字符串。
limit 可选。规定所返回的数组元素的数目。
可能的值:
- 大于 0 - 返回包含最多 limit 个元素的数组
- 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组
- 0 - 返回包含一个元素的数组

implode() 返回由数组元素组合成的字符串。

注释:implode() 函数接受两种参数顺序。但是由于历史原因,explode() 是不行的,您必须保证 separator 参数在 string 参数之前才行。
注释:implode() 函数的 separator 参数是可选的。但是为了向后兼容,推荐您使用使用两个参数。
注释:该函数是二进制安全的。

implode(separator,array)

参数 描述
separator 可选。规定数组元素之间放置的内容。默认是 “”(空字符串)。
array 必需。要组合为字符串的数组。


array_map()

array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
提示:您可以向函数输入一个或者多个数组。

arraymap(_myfunction,array1,array2,array3…)

参数 描述
myfunction 必需。用户自定义函数的名称,或者是 null。
array1 必需。规定数组。
array2 可选。规定数组。
array3 可选。规定数组。


new stdClass() 创建空对象

PHP可以用 $object = new StdClass(); 创建一个没有成员方法和属性的空对象。
很多时候,程序员们会将一些参数配置项之类的信息放在数组中使用,但是数组操作起来并不是很方便,很多时候使用对象操作符->xxx比数组操作符[‘xxx’]要方便不少。于是就需要创建一个空的对象,来将需要的属性名和属性值存储到对象中。
然而PHP中没有Javascript里面 var object = {}; 这样的语法。


substr()返回字符串的一部分。

注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

substr(string,start,length)

参数 描述
string 必需。规定要返回其中一部分的字符串。
start 必需。规定在字符串的何处开始。
- 正数 - 在字符串的指定位置开始
- 负数 - 在从字符串结尾开始的指定位置开始
- 0 - 在字符串中的第一个字符处开始
length 可选。规定被返回字符串的长度。默认是直到字符串的结尾。
- 正数 - 从 start 参数所在的位置返回的长度
- 负数 - 从字符串末端返回的长度

strtoupper()把字符串转换为大写。

print_r()可以以数组结构进行输出。


md5()计算字符串的 MD5 散列(加密)。

md5() 函数使用 RSA 数据安全,包括 MD5 报文摘要算法。
来自 RFC 1321 的解释 - MD5 报文摘要算法:MD5 报文摘要算法将任意长度的信息作为输入值,并将其换算成一个 128 位长度的”指纹信息”或”报文摘要”值来代表这个输入值,并以换算后的值作为结果。MD5 算法主要是为数字签名应用程序而设计的;在这个数字签名应用程序中,较大的文件将在加密(这里的加密过程是通过在一个密码系统下[如:RSA]的公开密钥下设置私有密钥而完成的)之前以一种安全的方式进行压缩。
如需计算文件的 MD5 散列,请使用 md5_file() 函数。

md5(string,raw)

参数 描述
string 必需。规定要计算的字符串。
raw 可选。规定十六进制或二进制输出格式:
- TRUE - 原始 16 字符二进制格式
- FALSE - 默认。32 字符十六进制数

strrpos() 查找字符串在另一字符串中最后一次出现的位置。

注释:strrpos() 函数对大小写敏感。
相关函数:
stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
strpos() - 查找字符串在另一字符串中第一次出现的位置(区分大小写)
strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)

strrpos(string,find,start)

参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定在何处开始搜索。


in_array() 搜索数组中是否存在指定的值。

注释:如果 search 参数是字符串且 type 参数被设置为 TRUE,则搜索区分大小写。

in_array(search,array,type)

参数 描述
search 必需。规定要在数组搜索的值。
array 必需。规定要搜索的数组。
type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

如果给定的值 search 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。

如果没有在数组中找到参数,函数返回 false。

注释:如果 search 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。

class_exists 检查类是否已定义

(PHP 4, PHP 5)
class_exists — 检查类是否已定义
bool class_exists ( string $class_name [, bool $autoload ] )

如果由 class_name 所指的类已经定义,此函数返回 TRUE,否则返回 FALSE


dirname() 取得路径中的目录名。

语法: string dirname(string path);
返回值: 字符串
函数种类: 文件存取
内容说明
本函数返回 path 中的目录名称。在 Win32 系统中,用斜线 (/) 或者反斜线 () 都可以;但是其它的操作系统的路径都是 (/)。
使用范例
本例返回字符串 $file 为 “/etc”。
<?
$path = “/etc/hostname”;
$file = dirname($path);
?>

scandir() 返回指定目录中的文件和目录的数组。

scandir(directory,sorting_order,context);

参数 描述
directory 必需。规定要扫描的目录。
sorting_order 可选。规定排列顺序。默认是 0,表示按字母升序排列。
如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列。
如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果。
context 可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。
返回值: 若成功则返回文件和目录的数组。失败则返回 FALSE。
如果 directory 不是目录,则抛出 E_WARNING 级别的错误。

file_get_contents() 把整个文件读入一个字符串中。

该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。

类似函数:fopen() 函数打开一个文件或 URL。区别是fopen()打开网页后,返回的不是字符串,不能直输出的,还需要用到fgets()这个函数来获取字符串。fgets()函数是从文件指针中读取一行。文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。
相关函数:file_put_contents() 函数把一个字符串写入文件中。
file_get_contents(path,include_path,context,start,max_length)

参数 描述
path 必需。规定要读取的文件,或者url。
include_path 可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 ‘1’。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 中新增的。

提示:该函数是二进制安全的。(意思是二进制数据(如图像)和字符数据都可以使用此函数写入。)

file_put_contents() 把一个字符串写入文件中。

与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
file_put_contents(file,data,mode,context)

参数 描述
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode 可选。规定如何打开/写入文件。可能的值:
- FILE_USE_INCLUDE_PATH
- FILE_APPEND
- LOCK_EX
context 可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。

参数 data 可以是数组(但不能是多维数组)。
自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 streamcopy_to_stream() 函数。
对 _context
参数的支持是 PHP 5.0.0 添加的。
该函数将返回写入到文件内数据的字节数。
提示:使用 FILE_APPEND 可避免删除文件中已有的内容。

注释:本函数可安全用于二进制对象。

feof() 检测是否已到达文件末尾 (eof)

如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socket 超时),其它情况则返回 FALSE。
feof(file)

file 参数是一个文件指针。这个文件指针必须有效,并且必须指向一个由 fopen() 或 fsockopen() 成功打开(但还没有被 fclose() 关闭)的文件。

提示:feof() 函数对遍历长度未知的数据很有用。
注意:如果服务器没有关闭由 fsockopen() 所打开的连接,feof() 会一直等待直到超时而返回 TRUE。默认的超时限制是 60 秒,可以使用 stream_set_timeout() 来改变这个值。
注意:如果传递的文件指针无效可能会陷入无限循环中,因为 EOF 不会返回 TRUE。

rtrim() 移除字符串右侧的空白字符或其他预定义字符

相关函数:

  • ltrim() - 移除字符串左侧的空白字符或其他预定义字符
  • trim() - 移除字符串两侧的空白字符或其他预定义字符

rtrim(string,charlist)

参数 描述
string 必需。规定要检查的字符串。
charlist 可选。规定从字符串中删除哪些字符。如果省略,则移除下列所有字符:
- “\0” - NULL
- “\t” - 制表符
- “\n” - 换行
- “\x0B” - 垂直制表符
- “\r” - 回车
- “ “ - 空格

reset() 将内部指针指向数组中的第一个元素,并输出

相关函数
current() - 返回数组中的当前元素的值
end() - 将内部指针指向数组中的最后一个元素,并输出
next() - 将内部指针指向数组中的下一个元素,并输出
prev() - 将内部指针指向数组中的上一个元素,并输出
each() - 返回当前元素的键名和键值,并将内部指针向前移动

返回值: 若成功则返回数组中第一个元素的值,若数组为空则返回 FALSE。

PHP判断文件是否存在file_exists、is_file、is_dir :

file_exists、is_file、is_dir的区别为,file_exists = is_dir + is_file。
也就是说file_exists既可以用来判断文件夹也可以判断文件,
而is_file通常用于判断文件是否存在,is_dir也常用于判断目录存在。

最终结论:
如果要判断文件是否存在,用函数 is_file()更合适,
如果要判断目录是否存在,用函数 is_dir()更合适,
好像没地方需要用file_exists了,不确定传入的参数是文件还是目录的时候用?