PHP常用函数

1.数据格式

1.1 Json

 函数名 参数 返回值 作用 
json_encode

mixed value [ , int option=0, int depth=512 ]

string

对变量进行 JSON 编码

json_decode

string json [ , bool assoc=false,  depth=512, options=0 ]

mixed 对 JSON 格式的字符串进行解码

 

1.2 Xml

 函数名 参数 返回值 作用 
simplexml_load_string

string data [ , string class_name="SimpleXMLElement", int options=0, ... ]

SimpleXMLElement / object / false 把 XML 字符串载入对象中,class_name为返回的对象类型,options 为解析的选项(如 LIBXML_NOCDATA)

 

2.文件目录

 函数名 参数 返回值 作用 
file_exists

string filename

bool 检查文件或目录是否存在
is_file

string filename

bool 判断给定文件名是否为一个正常的文件
is_dir

string filename

bool 判断给定文件名是否是一个目录
file

string filename [ , flag=0, resource context ]

array 把整个文件读入一个数组中(按行分割)
readfile

string filename [ , use_include_path=false, resource context ]

int 读取文件并写入到输出缓冲
file_get_contents

string filename [ , use_include_path=false, resource context, int offset=-1, int maxlen ]

string 将整个文件 / url 读入一个字符串
file_put_contents

string filename, mixed data [ , int flags=0, resource context ]

int 将一个字符串写入文件,和依次调用 fopen(),fwrite() 以及 fclose() 功能一样
dir

string directory [ , resource context ]

Directory类实例 以面向对象的方式访问目录,打开 dir 参数指定的目录
scandir

string directory [ , int sorting_order, resource context ]

array 列出指定路径中的文件和目录
mkdir

string pathname [ , int mode=0777, bool recursive=false, resource context ]

bool 尝试新建一个由 pathname 指定的目录
dirname

string path

string 返回路径中的目录部分
basename

string path [ , string suffix ]

string 返回路径中的文件名部分
is_uploaded_file

string filename

bool

判断文件是否是通过 HTTP POST 上传的,这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd

为了能使本函数正常工作,必段指定类似于 $_FILES['userfile']['tmp_name'] 的变量,而在从客户端上传的文件名 $_FILES['userfile']['name'] 不能正常运作。

move_uploaded_file

string filename, string destination

bool

判断文件是否是否合法(即通过 HTTP POST 上传的),如果文件合法,则将其移动为由 destination 指定的文件

 

2.1 $_FILES 变量

$_FILES[‘file’][‘name’]

被上传文件的名称

$_FILES[‘file’][‘type’]

被上传文件的类型

$_FILES[‘file’][‘size’]

被上传文件的大小(字节)

$_FILES[‘file’][‘tmp_name’]

存储在服务器的文件的临时副本的名称

$_FILES[‘file’][‘error’]

由文件上传导致的错误代码:

  • 0:没有错误发生,文件上传成功
  • 1:上传的文件超过了 php.ini中upload_max_filesize(默认情况为2M) 选项限制的值
  • 2:上传文件的大小超过了 HTML表单中MAX_FILE_SIZE选项指定的值
  • 3:文件只有部分被上传
  • 4:没有文件被上传
  • 5:上传文件大小为0

 

3.字符串

 函数名 参数 返回值 作用 
trim

string str [ , string character="\t\n\r\0\x0B" ]

string 去除字符串首尾处的空白字符(或者其他字符)
nl2br

string str [ , bool is_xhtml=true ]

string 使用
代替字符串 str 中的换行符 
strip_tags

string str [ , string allowable_tags ]

string

从字符串中去除 HTML 和 PHP 标记

如:

Test paragraph.

 Other text 转换为:Test paragraph. Other text

htmlspecialchars

string str [ , int flag=ENT_COMPAT | ENT_HTML401 ... ]

string

将特殊字符转换为 HTML 实体

如:Test 转换为:<a href='test'>Test</a>

htmlspecialchars_decode

string str [ , int flag=ENT_COMPAT | ENT_HTML401 ]

string

将特殊的 HTML 实体转换回普通字符

如:

this -> "

\n 转换为:

this -> "

addslashes

string str

string

使用反斜线引用字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线:单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)

如:O'reilly 转换为:O\'reilly

strlen

string str int 获取字符串长度

mb_strlen

string str [ , string encoding=mb_internal_encoding() ] mixed

返回具有 encoding 编码的字符串 string 包含的字符数

需要确保 php.ini 加载了 extension=php_mbstring.dll

mb_substr

string str, int start [ , int legth=NULL, string encoding=mb_internal_encoding() ] string

返回字符串 str 由 start 和 length 参数指定的子字符串,安全的 substr() 操作

需要确保 php.ini 加载了 extension=php_mbstring.dll

str_replace

mixed search, mixed replace, mixed subject [ , int &count ] string / array

将 subject 中全部的 search 都被 replace 替换,count 如果被指定,它的值将被设置为替换发生的次数

strstr

string haystack, mixed needle [ , before_needle = FALSE ] string

查找 needle 在 haystack 中的首次出现,并返回从该位置到字符串的剩余部分

utf8_encode

string data string 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码

iconv

string in_charset, string out_charset, string str string 将字符串 str 从 in_charset 转换编码到 out_charset

sprintf

string format [ , mixed args, mixed args... ] string 返回一个字符串生成格式化字符串 format,把百分号(%)符号替换成一个作为参数进行传递的变量

md5

string str [ , bool raw_output=false ] string 计算字符串的 MD5 散列值,如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回

sha1

string str [ , bool raw_output=false ] string

计算字符串的 sha1 散列值,如果可选的 raw_output 参数被设置为 TRUE,那么 sha1 摘要将以 20 字符长度的原始格式返回,否则返回值是一个 40 字符长度的十六进制数字

 

3.1 字符串 <=> 数组

 函数名 参数 返回值 作用 
explode

string delimiter, string str [ , int limit ]

array

返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来

如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分;如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素;如果 limit 是 0,则会被当做 1。

implode

[ string glue ] , array pieces string 用 glue(默认为空) 将一维数组的值连接为一个字符串

 

4.数组

 函数名 参数 返回值 作用 
count

mixed array_or_countable [ , int mode=COUNT_NORMAL ]

int 统计出数组里的所有元素的数量,或对象中的属性个数

in_array

mixed needle, array haystack [ , bool strict=FALSE ]

bool 检查数组中是否存在某个值,如果没有设置 strict 则使用宽松的比较

array_column

array input, mixed column_key [,mixed index_key=null]

array 返回 input 数组中键值为 column_key 的列, 如果指定了可选参数 index_key,那么 input 数组中的这一列的值将作为返回数组中对应值的键
array_search

mixed needle, array haystack [ , bool strict=FALSE ]

mixed 在数组中搜索给定的值,如果成功则返回首个相应的键名,如果没有设置 strict 则使用宽松的比较
array_key_exists

mixed key, array arr

bool 检查数组里是否有指定的键名或索引
array_values

array arr

array 返回数组中所有的值并给其建立数字索引
array_keys

array arr [ , mixed search_value=NULL, bool strict=FALSE ]

array 返回数组中部分的或所有的键名,如果指定了可选参数 search_value,则只返回该值的键名

array_filter

array arr [ , callable callback, int flag=0 ]

array

用回调函数过滤数组中的单元:依次将 array 数组中的每个值传递到 callback 函数,如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变

array_map

callable callback, array arr1 [ , arr arr2... ]

array

为数组的每个元素应用回调函数:返回为 array 每个元素应用 callback 函数之后的数组,callback 函数形参的数量和传给 array_map() 数组数量必须一样

array_merge

array arr1 [ , array arr2... ]

array

返回将后一个数组的值与前一个合并后的最终数组,如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值;如果数组为数字键名,后面的值将不会覆盖原来的值,而是附加到后面

array_unqiue

array arr [ , int sort_flags=SORT_STRING ]

array

移除数组中重复的值:注意键名保留不变,array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名,这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留

array_slice

array arr, int offset [ , int length=NULL, bool preserve_keys=FALSE ]

array

返回根据 offset 和 length 参数所指定的 array 数组中的一段序列

如果给出了 length 并且为正,则序列中将具有这么多的单元;如果给出了 length 并且为负,则序列将终止在距离数组末端这么远的地方;如果省略,则序列将从 offset 开始一直到 array 的末端。

该函数默认会重新排序并重置数组的数字索引,你可以通过将 preserve_keys 设为 TRUE 来改变此行为

array_reduce

array arr, callable callback [,mixed initial=NULL ]

mixed

将回调函数 callback 迭代地作用到 array 数组中的每一个单元中,从而将数组简化为单一的值。

callback( mixed result, mixed item ):result 携带上次迭代里的值; 如果本次迭代是第一次,那么这个值是 initial;item 携带了本次迭代的值

$getResList = explode(PHP_EOL, file_get_contents('./logs'));
$res = [];
// 按ip分组排序
foreach($getResList as $k=>$v) {
    // 会转为一个二维数组(key为所有ip,value为所有该ip的全部记录)
    $res[$v->ip][] = $v;
}
// 转为一维数组
$res = array_reduce($res, function($result, $value){
    return array_merge($result, array_values($value));
}, array());
Example

range

mixed start, mixed end [ , number step=1 ]

array

返回一个包含从 start 到 end 之间的元素的数组

list

mixed var1 [ , mixed var2... ]

array

把数组中的值赋给一组变量,像 array() 一样,这不是真正的函数,而是语言结构, list() 可以在单次操作内就为一组变量赋值

php

$info = array('coffee', 'brown', 'caffeine');

// 列出所有变量
list($drink, $color, $power) = $info;
// 输出:coffee is brown and caffeine makes it special.
echo nl2br("$drink is $color and $power makes it special.\n");

// 列出他们的其中一个
list($drink, , $power) = $info;
// 输出:coffee has caffeine.
echo nl2br("$drink has $power.\n");

// 或者让我们跳到仅第三个
list( , , $power) = $info;
// 输出:I need caffeine!
echo nl2br("I need $power!\n");

// list() 不能对字符串起作用
list($bar) = "abcde";
// NULL
var_dump($bar); 
?>
Example

extract

array &arr [ , int flags=EXTR_OVERWRITE, string prefix=NULL ]

int

从数组中将变量导入到当前的符号表,会将 arr 键名当作变量名,值作为变量的值,必须为关联数组,除非用了 EXTR_PREFIX_ALL 或 EXTR_PREFIX_INVALID

flags:对待非法/数字和冲突的键名的方法将根据取出标记 flags 参数决定:

  • EXTR_OVERWRITE:如果有冲突,覆盖已有的变量(默认)
  • EXTR_SKIP:如果有冲突,不覆盖已有的变量
  • EXTR_PREFIX_SAME:如果有冲突,在变量名前加上前缀 prefix
  • EXTR_PREFIX_ALL:给所有变量名加上前缀 prefix
  • EXTR_PREFIX_INVALID:仅在非法/数字的变量名前加上前缀 prefix
  • EXTR_IF_EXISTS:仅在当前符号表中已有同名变量时,覆盖它们的值,其它的都不处理。 以下情况非常有用:定义一些有效变量,然后从 $_REQUEST 中仅导入这些已定义的变量。
  • EXTR_PREFIX_IF_EXISTS:仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理
  • EXTR_REFS:将变量作为引用提取,这有力地表明了导入的变量仍然引用了 array 参数的值,可以单独使用这个标志或者在 flags 中用 OR 与其它任何标志结合使用

prefix:仅在 flags 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要,如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。前缀和数组键名之间会自动加上一个下划线

current

array &arr mixed

返回数组中的当前单元(每个数组中都有一个内部的指针指向它“当前的”单元,初始指向插入到数组中的第一个单元)

php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport);    // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport);    // $mode = 'foot';
$mode = end($transport);     // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';

$arr = array();
var_dump(current($arr)); // bool(false)

$arr = array(array());
var_dump(current($arr)); // array(0) { }
?>
Example

next

array &arr mixed 在返回数组的当前单元前将数组中的内部指针向前移动一位

prev

array &arr mixed 在返回数组的当前单元前将数组中的内部指针向倒回一位

reset

array &arr mixed 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值

end

array &arr mixed 将 array 的内部指针移动到最后一个单元并返回其值

each

array &arr array / false

返回 arr 数组中当前指针位置的键/值对并向前移动数组指针,键值对被返回为四个单元的数组,键名为0、1、key 和 value,单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。

在执行 each() 之后,数组指针将停留在数组中的下一个单元或者数组结尾时停留在最后一个单元,如果要再用 each 遍历数组,必须使用 reset() 重置指针位置

php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);

// 执行结果:
Array
(
    [1] => bob
    [value] => bob
    [0] => 0
    [key] => 0
)
?>
Example1
php
// each() 经常和 list() 结合使用来遍历数组,例如:
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');

reset($fruit);
while (list($key, $val) = each($fruit)) {
    echo "$key => $val\n";
}

// 执行结果:
a => apple
b => banana
c => cranberry
?>
Example2

 

5.Variable handling

 函数名 参数 返回值 作用 

isset

mixed var1 [ , mixed var2... ] bool

检测变量是否设置,并且不是 NULL,null 字符("\0")并不等同于 PHP 的 NULL 常量

如果传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止

empty

mixed var

bool 判断一个变量是否被认为是空的,当一个变量并不存在,或者它的值等于 FALSE,那么它会被认为不存在,如果变量不存在的话,empty() 并不会产生警告
strval

mixed var

string 返回变量 var 的 string 值,不能用于数组或对象
intval

mixed var [ , int base=10 ]

int 通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值,不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
floatval

mixed var

float 返回变量 var 的 float 值,不能用于数组或对象
boolval

mixed var

bool 返回变量 var 的 boolean 值
is_array

mixed var

bool 检测变量是否是数组
is_bool

mixed var

bool 检测变量是否是布尔型
is_int

mixed var

bool 检测变量是否是整数
is_float

mixed var

bool

检测变量是否是浮点型

若想测试一个变量是否是数字或数字字符串(如表单输入,它们通常为字符串),必须使用 is_numeric()

is_numeric

mixed var

bool 检测变量是否为数字或数字字符串
is_string

mixed var

bool 检测变量是否是字符串
is_object

mixed var

bool 检测变量是否是一个对象
is_null

mixed var

bool 检测变量是否为 NULL
is_callable

callable name[ , syntax_only=false, string &callable_name ]

bool 验证变量的内容能否作为函数调用
is_resource

mixed var

bool 检测变量是否为资源类型
is_scalar

mixed var

bool

检测变量是否是一个标量,标量变量是指 integer、float、string 或 bool的变量,而 array、object 和 resource 则不是标量

php
function show_var($var) {
    if (is_scalar($var)) {
        echo $var;
    } else {
        var_dump($var);
    }
}
$pi = 3.1416;
$proteins = array("hemoglobin", "cytochrome c oxidase", "ferredoxin");

show_var($pi);
// 打印:3.1416

show_var($proteins)
// 打印:
// array(3) {
//   [0]=>
//   string(10) "hemoglobin"
//   [1]=>
//   string(20) "cytochrome c oxidase"
//   [2]=>
//   string(10) "ferredoxin"
// }
?>
Example
get_defined_vars

void

array

返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量

get_resource_type

resource handle

string

返回资源(resource)类型

php
$c = mysql_connect();
echo get_resource_type($c)."\n";
// 打印:mysql link

$fp = fopen("foo","w");
echo get_resource_type($fp)."\n";
// 打印:file

$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."\n";
// 打印:domxml document
?>
Example
gettype

mixed var

string

获取变量的类型

settype

mixed &var, string type

bool

将变量 var 的类型设置成 type,type 的值为:

  • "boolean" (或为“bool”,从 PHP 4.2.0 起)
  • "integer" (或为“int”,从 PHP 4.2.0 起)
  • "float" (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
  • "string"
  • "array"
  • "object"
  • "null" (从 PHP 4.2.0 起)
serialize

mixed value

string

序列化对象,产生一个可存储的值的表示

当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep(),这样就允许对象在被序列化之前做任何清除操作,类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数

unserialize

string str

mixed

反序列化对象,从已存储的表示中创建 PHP 的值

unset

mixed var1 [ , mixed var2... ]

void

释放给定的变量

 

6.Function handling

 函数名 参数 返回值 作用 

function_exists

string function_name bool

在已经定义的函数列表(包括系统自带的函数和用户自定义的函数)中查找 function_name

get_defined_functions

[ bool exclude_disabled = FALSE ] array

返回所有已定义函数的数组

func_get_arg

int arg_num mixed

从当前函数的参数列表中根据参数偏移量 arg_num(从0开始) 获取参数列表的某一项

func_get_args

void array

返回一个包含函数参数列表的数组

func_num_args

void array

返回当前函数参数列表的数量

call_user_func_array

callable callback, array param_arr mixed

把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入

如:call_user_func_array([$this->delegator, $name], $args);

php
function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}


// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one", "two"));

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>
Example

call_user_func

callable callback [ , mixed parameter1, mixed parameter2... ] mixed

把第一个参数作为回调函数(callback)调用,其余参数是回调函数的参数

register_shutdown_function

callable callback [ , mixed parameter1, mixed parameter2... ] void

注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用

可以多次调用 register_shutdown_function(),这些被注册的回调会按照他们注册时的顺序被依次调用,如果你在注册的方法内部调用 exit(),那么所有处理会被中止,并且其他注册的中止回调也不会再被调用

 

7.类/对象

 函数名 参数 返回值 作用 

class_exists

string class_name [ , bool autoload=TRUE ] bool

检查指定的类是否已定义

method_exists

mixed object, string method_name bool

检查类的方法 method_name 是否存在于指定的对象 object 中

interface_exists

string interface_name [ , bool autoload=TRUE ] bool

检查接口是否已被定义

property_exists

mixed class, string property bool

检查给出的属性 property 是否存在于指定的类中

get_called_class

void string

获取静态方法调用的类名,如果不是在类中调用则返回 FALSE

get_class

[ object obj=NULL ] string 返回对象实例 object 所属类的名字,如果在类里,参数可以省略

get_class_vars

string class_name array 返回由类的默认公有属性组成的关联数组

get_class_methods

mixed class_name array 返回由类的方法名组成的数组

get_object_vars 

object obj array 返回由 obj 指定的对象中定义的属性组成的关联数组

get_parent_class

[ mixed obj ] string 返回对象或类的父类名:如果 obj 是对象,则返回对象实例 obj 所属类的父类名,如果 obj 是字符串,则返回以此字符串为名的类的父类名

get_declared_classes

void array 返回由当前脚本中已定义类的名字组成的数组

get_declared_interfaces

void array 返回由当前脚本中已声明接口的名字组成的数组

is_subclass_of

object obj, string class_name bool 如果对象 obj 所属类是类 class_name 的子类,则返回 TRUE

 

8.时间

 函数名 参数 返回值 作用 

date

string format [ , int timestamp ] string

返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间,默认值为 time()

time

void int

返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数

microtime

[ bool get_as_float ] mixed

不带参数时,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分,当给出 get_as_float 参数并且其值等价于 TRUE 时,本函数将返回一个浮点数

php
/**
 * Simple function to replicate PHP 5 behaviour
 */
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

// Sleep for a while
usleep(100);

$time_end = microtime_float();
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";
?>
Example:脚本运行时间计算

strtotime

string time [ , int now=time() ] int

本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳

 

9.Math

 函数名 参数 返回值 作用 

ceil

float value float

返回不小于 value 的下一个整数,value 如果有小数部分则进一位

floor

float value float

返回不大于 value 的最接近的整数,舍去小数部分取整

round

float val [ , int precision=0, int mode=PHP_ROUND_HALF_UP ] float

返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果,precision 也可以是负数或零(默认值)

mt_rand

[ int min, int max ] int

生成更好的随机数,用来替代 rand(),它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍

如想要 5 到 15(包括 5 和 15)之间的随机数:mt_rand(5, 15)

dechex

int number string

返回转换为十六进制数的十进制数

所能转换的最大数值为十进制的 PHP_INT_MAX * 2 + 1 (或 -1):在 32 位平台上是十进制的 4294967295,其 dechex() 的结果为 ffffffff

 

10.URL

 函数名 参数 返回值 作用 

url_encode

string str string

编码 URL 字符串

url_decode

string str string

解码已编码的 URL 字符串

pares_url

string url [,int component=-1 ] mixed

解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分

php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

// 输出结果:
Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
Example

 

11.会话

 函数名 参数 返回值 作用 

session_start

[ array options=[] ] bool

启动新会话或者重用现有会话,开启后使用 $_SESSION 设置和读取

session_destroy

void bool

销毁一个会话中的全部数据, 如果需要再次使用会话变量, 必须重新调用 session_start() 函数

 

12.网络

 函数名 参数 返回值 作用 

setcookie

string name [ , string value="", int expire=0, string path="", string domain="", bool secure=FALSE, bool httponly=FALSE ] bool

向客户端发送一个 HTTP cookie, 和其他 HTTP 头一样,必须在脚本产生任意输出之前发送 Cookie(由于协议的限制),请在产生任何输出之前(包括 和 或者空格)调用本函数

一旦设置 Cookie 后,下次打开页面时可以使用 $_COOKIE 读取。 Cookie 值同样也存在于 $_REQUEST

如:setcookie("TestCookie", "value", time()-3600, "/", "example.com");

header

string str [ , bool replace=true, int http_response_code ] void

发送原生 HTTP 头,必须在任何实际输出之前调用

如:header("HTTP/1.0 404 Not Found");  

      header("Location: http://www.example.com/"); 

 

13.正则

 函数名 参数 返回值 作用 

preg_match

string pattern, string subject [ , array &matches, int flags=0, int offset=0 ] int

执行匹配正则表达式,返回 pattern 的匹配次数,它的值将是0次(不匹配)或1次

如果提供了参数matches,它将被填充为搜索结果,$matches[0] 将包含完整模式匹配到的文本,$matches[1] 将包含第一个捕获子组匹配到的文本,以此类推

php
//模式分隔符后的"i"标记这是一个大小写不敏感的搜索
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}

// 执行结果:A match was found.
?>
Example

preg_match_all

string pattern, string subject [ , array &matches, int flags=PREG_PATTERN_ORDER, int offset=0 ] int

搜索 subject 中所有匹配 pattern 给定正则表达式的匹配结果并且将它们以 flag 指定顺序输出到 matches 中

preg_replace

mixed pattern, mixed replacement, mixed subject [ , int limit=-1, int &count ] mixed

搜索 subject 中匹配 pattern 的部分,以 replacement 进行替换

subject:要进行搜索和替换的字符串或字符串数组,如果 subject 是一个数组,搜索和替换回在 subject 的每一个元素上进行, 并且返回值也会是一个数组

limit:每个模式在每个subject上进行替换的最大次数。默认是 -1(无限)

count:如果指定,将会被填充为完成的替换次数

返回值:如果 subject 是一个数组, 该函数返回一个数组,其他情况下返回一个字符串,如果匹配被查找到,替换后的 subject 被返回,其他情况下返回没有改变的 subject,如果发生错误返回 NULL

php
$string = 'April 2, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = 'May ${2}6, $3';
echo preg_replace($pattern, $replacement, $string);

// 执行结果:May 26, 2003
?>
View Code

preg_replace_callback

mixed pattern, callable callback, mixed subject [ , int limit=-1, int &count ] mixed

 执行一个正则表达式搜索并且使用一个回调进行替换,该函数除了可以指定一个 callback 替代 replacement 进行替换字符串的计算,其他方面等同于 preg_replace()

callback:在每次需要替换时调用,调用时函数得到的参数是从subject 中匹配到的结果。回调函数返回真正参与替换的字符串。这是该回调函数的签名:string handler ( array $matches )

Example

php
// 将文本中的年份增加一年.
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// 回调函数
function next_year($matches)
{
  // 通常: $matches[0]是完成的匹配
  // $matches[1]是第一个捕获子组的匹配
  // 以此类推
  return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
            "|(\d{2}/\d{2}/)(\d{4})|",
            "next_year",
            $text);

// 执行结果:
April fools day is 04/01/2003
Last christmas was 12/24/2002
?>
Example

 

14.Output Control

 函数名 参数 返回值 作用 

ob_start

[ callable output_callback, int chunk_size, bool erase ] bool

此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中

内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中,想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数,另外使用 ob_end_clean() 函数会静默丢弃掉缓冲区的内容

输出缓冲区是可堆叠的,这即意谓着,当有一个 ob_start() 是活跃的时,你可以调用另一个 ob_start() ,只要确保又正确调用了 ob_end_flush() 恰当的次数即可,如果有多重输出回调函数是活跃的,输出内容会一直按嵌套的顺序依次通过它们而被过滤

ob_get_contents

void string

函数返回输出缓冲区的内容,如果输出缓冲区无效将返回 FALSE

ob_end_clean

void bool

清空最顶层输出缓冲区的内容并关闭这个缓冲区

ob_end_flush

void bool

冲刷出最顶层缓冲区的内容(如果里边有内容的话),并关闭缓冲区

 

15.图像

 函数名 参数 返回值 作用 

imagecreatetruecolor

int width, int height resource

新建一个真彩色图像:返回一个图像标识符,代表了一幅大小为 width 和 height 的黑色图像

imgcreatefrompng/gif/jpeg

string filename resourece

由文件或 URL 创建一个新图象:返回一图像标识符,代表了从给定的文件名取得的图像

imagecolorallocate

resource img, int red, int green, int blue int

为一幅图像分配颜色:返回一个标识符,代表了由给定的 RGB 成分组成的颜色

imagefill

resource img, int x, int y, int color bool

区域填充:在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)

imageline

resource img, int x1, int y1, int x2, int y2, int color bool

画一条线段:用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条线段

imagestring

resource img, int font, int x, int y, string str, int color bool

水平地画一行字符串:用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0),如果 font 是 1、2、3、4 或 5,则使用内置字体

imagepng

resource img [ , string filename ] bool

以 PNG 格式将图像输出到浏览器或文件

imagegif

resource img [ , string filename ] bool

以 GIF 格式将图像输出到浏览器或文件

图像格式为 GIF87a,如果用了 imagecolortransparent() 使图像为透明,则其格式为 GIF89a

imagejpeg

resource img [ , string filename, int quality ] bool

以 JPEG 格式将图像输出到浏览器或文件

filename:文件保存的路径,如果未设置或为 NULL,将会直接输出原始图象流

quality:范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大),默认为 IJG 默认的质量值(大约 75)

imagecopyresampled

resource dst_img, resource src_img, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h bool

将一幅图像中的一块正方形区域拷贝到另一个图像中,平滑地插入像素值,因此减小了图像的大小而仍然保持了极大的清晰度

如果源和目标的宽度和高度不同,则会进行相应的图像收缩和拉伸,坐标指的是左上角,本函数可用来在同一幅图内部拷贝(如果 dst_image 和 src_image 相同的话)区域,但如果区域交迭的话则结果不可预知

getimagesize

string filename [ , array &imageinfo ] array

取得图像大小:返回图像的尺寸以及文件类型,返回一个具有四个单元的数组:

  • 索引 0 包含图像宽度的像素值
  • 索引 1 包含图像高度的像素值
  • 索引 2 是图像类型的标记:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM
  • 索引 3 是文本字符串,内容为“height="yyy" width="xxx"”,可直接用于 IMG 标记
php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "$attr>";
?>
Example

imagedestroy

resource img bool

 释放与 image 关联的内存,image 是由图像创建函数返回的图像标识符,例如 imagecreatetruecolor()

 

16.Other

 函数名 参数 返回值 作用 

define

string name, mixed value [ , bool case_insensitive=FALSE ] bool

定义一个常量

defined

string name bool

检查该名称的常量是否已定义

uniqid

[ string prefix="", bool more_entropy=FALSE ] string

获取一个带前缀、基于当前时间微秒数的唯一ID,如:sha1(uniqid(rand(),true));

本函数并不会生成安全加密的值,不应用于加密用途。若需要安全加密的值,考虑使用 openssl_random_pseudo_bytes()

 

Closure::bind (closure,newthis[,newcope]): 复制一个闭包,绑定指定的$this对象和类作用域

declare

trait

转载于:https://www.cnblogs.com/tangxuliang/p/9078965.html

你可能感兴趣的:(php,json,数据库)