欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP开发常用函数和必须会的函数总结 带例子

程序员文章站 2022-05-22 08:30:00
...
PHP开发常用函数
在共过开发中,我经常要用到一些PHP函数,有时会不记得,这里把这些常用函数总结到一起。本篇列举了PHP程序员开发中经常用到的php函数。几乎每个函数都有例子,老手可以看看当做温习,新手可以背理论,然后把例子敲他几遍,后面再开发中,开发效率绝对有所提高。例子大多取自w3cschool标准例子和网上的一些资源,部分为个人所写,均经过测试。如果要装载本文,还请注明来源。
一.检查函数

1.empty()
empty() 函数是用来测试变量是否已经配置。若变量已存在、非空字符串或者非零,则返回 false 值;反之返回 true值。所以,当字符串的值为0时,也返回true,就是执行empty内部的语句。
empty()函数 判断值为否为空
若变量不存在则返回 TRUE
若变量存在且其值为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 TURE
若变量存在且值不为""、0、"0"、NULL、、FALSE、array()、var $var; 以及没有任何属性的对象,则返回 FALSE
empty() 只检测变量,检测任何非变量的东西都将导致解析错误。换句话说,后边的语句将不会起作用: empty(addslashes($name))。

2.isset()
isset() 函数 一般用来检测变量是否设置。
若变量不存在则返回 FALSE
若变量存在且其值为NULL,也返回 FALSE
若变量存在且值不为NULL,则返回 TURE
同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE
使用 unset() 释放变量之后,它将不再是 isset()。
如检测 $id 变量,当 $id=0 时,用empty() 和 isset() 来检测变量 $id 是否已经配置,两都将返回不同的值?? empty() 认为没有配置,isset() 能够取得 $id 的值:
我们在使用变量处理函数时,当该变量可能出现0的值,使用 empty() 要小心,这个时候用 isset 取代它更明智一些。
如果变量为0,则empty()会返回TRUE,isset()会返回TRUE;
如果变量为空字符串,则empty()会返回TRUE,isset()会返回TRUE;
如果变量未定义,则empty()会返回TRUE,isset()会返回FLASE;

3.defined() 函数检查某常量是否存在。若常量存在,则返回 true,否则返回 false。
例子
define("GREETING","Hello world!");
echo defined("GREETING"); //输出:1
?>

4.is_int()
is_int() 判断变量类型是否为整数类型。
其他类似判断变量类型函数:is_array() is_double() is_float() is_integer() is_long() is_object() is_real() is_string()

------------------------------------------------------------------------------------------------------------------------------------------------------------------


二. 数组函数
1.array_keys()
array_keys()定义: 函数返回包含数组中所有键名的一个新数组。
array_keys() 案例:
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a)); //输出:Array ( [0] => a [1] => b [2] => c )

2.array_values()
array_values()定义: 函数返回一个包含给定数组中所有键值的数组,但不保留键名。
array_values() 案例:
$a=array("a"=>"Horse","b"=>"Cat","c"=>"Dog");
print_r(array_keys($a)); //输出:Array ( [0] => Horse [1] => Cat [2] => Dog )

3.array_filter()
array_filter() 定义:函数用回调函数过滤数组中的元素,如果自定义过滤函数返回 true,则被操作的数组的当前值就会被包含在返回的结果数组中, 并将结果组成一个新的数组。如果原数组是一个关联数组,键名保持不变。
array_filter() 语法:array_filter(array,function)
array_filter() 案例:
function test($v){
if($v === 'Cat'){
return true;
}
return false;
}
$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
print_r(array_filter($a,"test")); //输出:Array ( [1] => Cat )

4.array_slice() 定义:函数在数组中根据条件取出一段值,并返回。
array_slice() 语法:array_slice(array,offset,length,preserve)
参数 描述
offset:必需。数值。规定取出元素的开始位置。
如果是正数,则从前往后开始取,如果是负值,从后向前取 offset 绝对值。
length:可选。数值。规定被返回数组的长度。
如果 length 为正,则返回该数量的元素。
如果 length 为负,则序列将终止在距离数组末端这么远的地方。
如果省略,则序列将从 offset 开始直到 array 的末端。

5.array_slice() 案例:
$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird",4=>"lili",5=>"james");
print_r(array_slice($a,0)); //输出:Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird [4] => lili [5] => james )
print_r(array_slice($a,0,2)); //输出:Array ( [0] => Dog [1] => Cat )
print_r(array_slice($a,0,-2)); //输出:Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird )
print_r(array_slice($a,-2,-1)); //输出:Array ( [0] => lili )
print_r(array_slice($a,-1,-2)); //输出:Array()

6.array_serch()
array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_search("Dog",$a); //输出:a
?>

7.array_merge()
array_merge() 函数把两个或多个数组合并为一个数组。

例子
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2)); //输出:Array ( [a] => Horse [b] => Cat [c] => Cow )
?>

8.array_combine()
array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。

例子
$a1=array("a","b","c","d");
$a2=array("Cat","Dog","Horse","Cow");
print_r(array_combine($a1,$a2)); //输出:Array ( [a] => Cat [b] => Dog [c] => Horse [d] => Cow )
?>

9.is_array()
is_array 判断变量类型是否为数组类型。若变量为数组类型则返回 true,否则返回 false。

10.in_array() in_array(value,array,type)
in_array() 函数在数组中搜索给定的值。
如果给定的值 value 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。
如果没有在数组中找到参数,函数返回 false。
$people = array("Peter", "Joe", "Glenn", "Cleveland", 23);
if (in_array(23,$people, TRUE)){
echo "Match found
";
}else{
echo "Match not found
";
}
?>
输出:Match found//数据类型与给定值都相同

if (in_array("23",$people, TRUE)){
echo "Match found
";
}else{
echo "Match not found
";
}
输出:Match not found//数据类型不同,给定值相同

11.count() sizeof() 该函数是 count() 的别名。
count() 函数计算数组中的单元数目或对象中的属性个数。对于数组,返回其元素的个数,对于其他值,返回 1。如果参数是变量而变量没有定义,则返回 0。
$people = array("Peter", "Joe", "Glenn", "Cleveland");
$result = count($people);
echo $result; //输出:4
?>

12.array_push() array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。该函数等于多次调用 $array[] = $value。
$arr = array();
$arr[]= 'john';
array_push($arr, 'jams','tome');
print_r($arr); //输出: Array ( [0] => john [1] => jams [2] => tome )
?>

13.array_pop()
array_pop() 函数删除数组中的最后一个元素。
$a=array("Dog","Cat","Horse");
array_pop($a);
print_r($a);//输出:Array ( [0] => Dog [1] => Cat )
?>

14.array_unshift() array_unshift(array,value1,value2,value3...)
array_unshift() 函数在数组开头插入一个或多个元素。
$a=array("a"=>"Cat","b"=>"Dog");
array_unshift($a,"Horse");
print_r($a);// 输出:Array ( [0] => Horse [a] => Cat [b] => Dog )
?>

15.array_shift()
array_shift() 函数删除数组中的第一个元素,并返回被删除元素的值。
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
echo array_shift($a);
print_r ($a); //输出:Dog Array ( [b] => Cat [c] => Horse )
?>

16.array_flip()
array_flip() 函数返回一个反转后的数组,如果同一值出现了多次,则最后一个键名将作为它的值,所有其他的键名都将丢失。
如果原数组中的值的数据类型不是字符串或整数,函数将报错。
$a=array(0=>"Dog",1=>"Cat",2=>"Horse");
print_r(array_flip($a)); //输出:Array ( [Dog] => 0 [Cat] => 1 [Horse] => 2 )
?>

17.array_key_exists() array_key_exists(key,array)
array_key_exists() 函数判断某个数组中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。
$a=array("a"=>"Dog","b"=>"Cat");
if (array_key_exists("a",$a)){
echo "Key exists!";
}else{
echo "Key does not exist!";
}

18.array_reverse() array_reverse(array,preserve) preserve 可选。规定是否保留原始数组的键名。可能的值:true 和 false。
$a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse");
print_r(array_reverse($a)); //输出:Array ( [c] => Horse [b] => Cat [a] => Dog )
?>

19.end()
end() 函数将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)。
$people = array("Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "
";
echo end($people);
?>
输出:
Peter
Cleveland

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

21.sort asort arsort ksort krsort
(1)sort()
sort() 函数按升序对给定数组的值排序。注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
sort($my_array);
print_r($my_array);// 输出:Array ( [0] => Cat [1] => Dog [2] => Horse )
?>
(2)asort()
asort() 函数对数组进行排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
asort($my_array);
print_r($my_array); //输出:Array ( [b] => Cat [a] => Dog [c] => Horse )
?>

(3)arsort() 函数对数组进行逆向排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
arsort($my_array);
print_r($my_array); //输出:Array ( [c] => Horse [a] => Dog [b] => Cat )
?>

(4)ksort()
ksort() 函数按照键名对数组排序,为数组值保留原来的键。
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
ksort($my_array);
print_r($my_array); //输出:Array ( [a] => Dog [b] => Cat [c] => Horse )
?>

(5)ksort() 函数按照键名对数组排序,为数组值保留原来的键。
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
krsort($my_array);
print_r($my_array); //输出:Array ( [c] => Horse [b] => Cat [a] => Dog )
?>

---------------------------------------------------------------------------------------------------------------------------------------

三.字符串函数

1.strpos()
strpos() 函数返回字符串在另一个字符串中第一次出现的位置。如果成功,则返回位置,否则返回 false。
echo strpos("Hello world!","wo"); //输出:6
?>

2.strrpos()
strrpos() 函数查找字符串在另一个字符串中最后一次出现的位置。如果成功,则返回位置,否则返回 false。
echo strpos("Hello world!","wo"); //输出:6
?>

3.strlen()
strlen() 函数返回字符串的长度。
echo strlen("Hello world!"); //输出:12
?>

4.substr() 截取函数substr(string,start,length)
substr() 函数返回字符串的一部分。
具体用法看例子:
$str = 'abcdefg';
echo substr($str,0).'
'; //输出:abcdefg 解释:a的下标为0,没有第三个参数,所以从a开始截取,一直截取最后
echo substr($str,3).'
'; //输出:defg 解释:d的下标为3,没有第三个参数,所以从d开始截取,一直截取最后
echo substr($str,1,4).'
'; //输出:bcde 解释:b的下表为1,e的下标为4,所以从b开始,截取到e
echo substr($str,-2).'
'; //输出:fg 解释:g的位置为-1,f的位置为-2,没有第三个参数,所以从f开始截取,一直截取到最后
echo substr($str,-5,-1).'
'; //输出:cdef 解释:c的位置为-5,g的位置为-1,截取是从-5的位置开始算,在-1之前的那个位置结束,也就是不包括-1的位置。
echo substr($str,1,-2).'
'; //输出:bcde 解释:b的位置为-1,f的位置为-2,b开始截取,截取到f前面的那个止(即不包括-2的这个位置)
?>

5.strstr() strstr(string,search)
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。
echo strstr("Hello world!","o"); //输出:o world!
?>

该函数对大小写敏感。如需进行大小写不敏感的搜索,请使用 stristr()。

6.trim()
trim() 函数从字符串的两端删除空白字符和其他预定义字符。
$str = " Hello World! ";
echo $str.'
';
echo trim($str).'
';
//查看源码可以看到: Hello World!
Hello World!

?>

7.strtoupper()
strtoupper() 函数把字符串转换为大写。
echo strtoupper("Hello WORLD!"); //输出:HELLO WORLD!
?>

8.strtolower
strtolower() 函数把字符串转换为小写。
echo strtolower("Hello WORLD!"); //输出:hello world!
?>

9.ucfirst()
ucfirst() 函数把字符串中的首字符转换为大写。
echo ucfirst("hello world"); //输出:Hello world!
?>

10.ucwords()
ucwords() 函数把字符串中每个单词的首字符转换为大写。
echo ucfirst("hello world"); //输出:Hello World!
?>

11.strrev()
strrev() 函数反转字符串。
echo strrev("Hello World!"); //输出:!dlroW olleH
?>

12.round() ceil() intval() floor() 的用法
round() 函数对浮点数进行四舍五入。
ceil() 进一法取整
intval() 获取变量的整数值
echo round(0.60); //输出:1
echo round(0.49); //输出:0
echo ceil(3.33); //输出:4
echo ceil(3.9); //输出:4
echo intval(3.33);//输出:3
echo intval(3.9); //输出:3
?>
floor() PHP Math 函数
floor() 函数向下舍入为最接近的整数。返回不大于 x 的下一个整数,将 x 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
具体看例子:
echo(floor(0.60)); //0
echo(floor(0.40)); //0
echo(floor(5)); //5
echo(floor(5.1)); //5
echo(floor(-5.1)); //-6
echo(floor(-5.9)) //-6
?>

13.implode()
implode() 函数把数组元素组合为一个字符串。
$arr = array('Hello','World!','Beautiful','Day!');
echo implode(" ",$arr); //输出:Hello World! Beautiful Day!
?>

14.explode()
explode() 函数把字符串分割为数组。
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?>
输出:
Array(
[0] => Hello
[1] => world.
[2] => It's
[3] => a
[4] => beautiful
[5] => day.
)

15.str_pad()
str_pad() 函数把字符串填充为指定的长度。 str_pad(string,length,pad_string,pad_type)
string 必需。规定要填充的字符串。
length 必需。规定新字符串的长度。如果该值小于原始字符串的长度,则不进行任何操作。
pad_string 可选。规定供填充使用的字符串。默认是空白。
pad_type 可选。规定填充字符串的那边。可能的值:
STR_PAD_BOTH - 填充到字符串的两头。如果不是偶数,则右侧获得额外的填充。
STR_PAD_LEFT - 填充到字符串的左侧。
STR_PAD_RIGHT - 填充到字符串的右侧。这是默认的。
$str = "Hello World";
echo str_pad($str,20,"."); //输出:Hello World.........
?>

$str = "Hello World";
echo str_pad($str,20,".",STR_PAD_LEFT); //输出:.........Hello World
?>

16.strip_tags() strip_tags(string,allow) string 必需。规定要检查的字符串。allow 可选。规定允许的标签。这些标签不会被删除。
strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签。
echo strip_tags("Hello world!",""); //输出:Hello world!
?>

17.htmlspecialchars() htmlspecialchars(string,quotestyle,character-set)
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
> (大于) 成为 >

string 必需。规定要转换的字符串。
quotestyle 可选。规定如何编码单引号和双引号。
ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
character-set 可选。字符串值,规定要使用的字符集。



$str = "John & 'Adams'";
echo htmlspecialchars($str, ENT_COMPAT);
echo "
";
echo htmlspecialchars($str, ENT_QUOTES);
echo "
";
echo htmlspecialchars($str, ENT_NOQUOTES);
?>


浏览器输出:
John & 'Adams'
John & 'Adams'
John & 'Adams'

如果在浏览器中查看源代码,会看到这些 HTML:


John & 'Adams'

John & 'Adams'

John & 'Adams'



18.htmlspecialchars_decode() htmlspecialchars_decode() 函数是 htmlspecialchars() 函数的反函数。
htmlspecialchars_decode() 函数把一些预定义的 HTML 实体转换为字符。
会被解码的 HTML 实体是:
& 解码成 & (和号)
" 解码成 " (双引号)
' 解码成 ' (单引号)
< 解码成 > 解码成 > (大于)

$str = "This is some <b>bold</b> text.";
echo htmlspecialchars_decode($str);
?>

浏览器输出:This is some bold text.
如果在浏览器中查看源代码,会看到这些 HTML:



This is some bold text.



-------------------------------------------------------------------------------------------------------------------------------------

四 Date / Time 函数
1.time()
time() 函数返回当前时间的 Unix 时间戳。
echo time(); //输出:1424937345
echo date('Y-m-d H:i:s',time());//输出:2015-02-26 15:55:32 // date()函数将时间戳转换为日期格式
?>

2.mktime() 语法:mktime(hour,minute,second,month,day,year,is_dst)
mktime() 函数返回一个日期的 Unix 时间戳。
echo(date("M-d-Y",mktime(0,0,0,12,36,2001))); //输出:Jan-05-2002
echo(date("M-d-Y",mktime(0,0,0,14,1,2001))); //输出:Feb-01-2002
echo(date("M-d-Y",mktime(0,0,0,1,1,2001))); //输出:Jan-01-2001
echo(date("M-d-Y",mktime(0,0,0,1,1,99))); //输出:Jan-01-1999
?>

3.microtime()
microtime() 函数返回当前 Unix 时间戳和微秒数。
echo microtime(); //输出:0.79456400 1424937755
?>

4.strtotime()
strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。
echo(strtotime("now"));
echo(strtotime("3 October 2005"));
echo(strtotime("+5 hours"));
echo(strtotime("+1 week"));
echo(strtotime("+1 week 3 days 7 hours 5 seconds"));
echo(strtotime("next Monday"));
echo(strtotime("last Sunday"));
?>
输出:
1138614504
1128290400
1138632504
1139219304
1139503709
1139180400
1138489200

5.date()
date() 函数格式化一个本地时间/日期。
echo date('Y-m-d H:i:s',time());//输出:2015-02-26 15:55:32
?>

6.date_default_timezone_set() 语法:date_default_timezone_set(timezone)
date_default_timezone_set() 函数设置用在脚本中所有日期/时间函数的默认时区。
设置中国时区
date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' 亚洲/上海
date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆”
date_default_timezone_set('Asia/Harbin');//其中'Asia/Harbin'为"亚洲/哈尔滨"
date_default_timezone_set('PRC');//其中PRC为“*”


7.date_default_timezone_get()
date_default_timezone_get() 函数返回脚本中所有日期时间函数所使用的默认时区。
echo date_default_timezone_get(); //输出:Asia/Chongqing
?


8.usleep()
usleep() 函数延迟代码执行若干微秒。
echo date('h:i:s') . "
"; //开始执行程序
usleep(10000000); //延迟10秒
echo date('h:i:s'); //再次开始执行程序
?>
输出:
04:28:24
04:28:34

9.就时间戳转换为时间和将时间转换为时间戳
(1)UNIX时间戳转换为日期用函数: date()
看例子:
echo date("Y-m-d H:i:s", time());
echo date("Y-m-d H:i:s","1424937345");
?>

2. 日期转换为UNIX时间戳用函数:strtotime()
例子:
echo strtotime('2010-03-24 08:15:42');
?>


10. 开发案例
/*
现在要实现这样功能:
如银行信用卡还款通知:当程序扫描到用户需要信用卡还款时,就发送短信通知用户。
但为了防止打扰到用户,只能在白天9:00-18:00之间发送短信,怎么实现这个功能呢?
*/
$y=date("Y",time());
$m=date("m",time());
$d=date("d",time());
$start_time = mktime(9, 0, 0, $m, $d ,$y);
$end_time = mktime(18, 0, 0, $m, $d ,$y);
$time = time();
if($time >= $start_time && $time //send message... 写发送短信的代码
}
?>
-------------------------------------------------------------------------------------------------------------------------------------

五 其他函数
1.error_reporting(E_ALL);
报告所有错误

2.file_exists(path)
file_exists() 函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 true,否则返回 false。
echo file_exists("test.txt");
?>

3.number_format()
number_format() 函数通过千位分组来格式化数字。
echo number_format("1000000"); //1,000,000
echo number_format("1000000",2); //1,000,000.00
echo number_format("1000000",2,",","."); //1.000.000,00
?>

4.preg_replace()
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索subject中匹配pattern的部分, 以replacement进行替换。
这个例子剥离多余的空白字符
$str = 'foo o';
$str = preg_replace('/\s\s+/', ' ', $str);
// 将会改变为'foo o'
echo $str;
?>

5.dirname()
dirname() 函数返回路径中的目录部分。
echo dirname("c:/testweb/home.php"); //输出:c:/testweb
echo dirname("/testweb/home.php"); //输出:testweb
?>
6.__FILE__
__FILE__ 返回当前 路径+文件名

7.dirname(__FILE__)
当前php程序的就是完整路径(路径+文件名)
$the_full_name=__FILE__;
$the_dir=dirname(__FILE__);
echo $the_full_name; //返回/home/data/demo/test/a.php
echo $the_dir; //返回/home/data/demo/test
?>
简单地说:
__FILE__ 返回当前 路径+文件名
dirname(__FILE__) 返回当前文件路径的 路径部分
dirname(dirname(__FILE__));得到的是文件上一层目录名(不含最后一个“/”号)

例如,当前文件是 /home/data/demo/test.php ,则
__FILE__ 得到的就是完整路径 即 /home/data/demo/test.php ,而
dirname(__FILE__)得到路径部分 即 /home/data/demo (后面没有“/”号)

8.$_SERVER['SCRIPT_FILENAME']
PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别:
通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP 文件的完整路径(绝对路径)与文件名:
二者的差别是:$_SERVER['SCRIPT_FILENAME'] 反映的是当前执行程序的绝对路径及文件名;__FILE__ 反映的是原始文件(被包含文件)的绝对路径及文件名

9.$_SERVER['HTTP_HOST']和$_SERVER['PHP_SELF']
假如命令行的地址是:http://www.baidu.com/index.php
那么:
$_SERVER['HTTP_HOST']=='www.baidu.com' //一个是主机地址
$_SERVER['PHP_SELF']=='/index.php' //脚本文件的绝对路径

10.error_log()
error_log() 函数向服务器错误记录、文件或远程目标发送一个错误。若成功,返回 true,否则返回 false。
$test=2;

if ($test>1)
{
error_log("A custom error has been triggered",
1,"someone@example.com","From: webmaster@example.com");
}
?>
输出:
A custom error has been triggered

11.ini_set('display_errors', '1');
PHP ini_set用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置,对于虚拟空间来说,很方便。
函数格式:string ini_set(string $varname, string $newvalue)
常见的设置:
@ ini_set('memory_limit', '64M');
'menory_limit':设定一个脚本所能够申请到的最大内存字节数,这有利于写的不好的脚本消耗服务器上的可用内存。@符号代表不输出错误。
@ini_set('display_errors', 1);
‘display_errors':设置错误信息的类别。

ini_set("display_errors","On"); //显示所有错误信息
ini_set("display_errors","Off"); //屏蔽所有错误信息
这里要说明的是,通常服务器配置文件中,是屏蔽notice错误,只显示error错误,如果是这样的话,你打开错误显示,也不会显示notice错误

12.json_decode()和json_encode()
先看json_encode()
json_decode ? 对 JSON 格式的字符串进行编码 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
json_decode($data)输出的是对象,而json_decode("$data",true)是生成PHP关联数组.
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>

上例将输出:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}

array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}

在看json_decode()
json_encode ? 对变量进行 JSON 编码
该函数只能接受 UTF-8 编码的数据
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);
?>
以上例程会输出:
{"a":1,"b":2,"c":3,"d":4,"e":5}

看一个开发案例(删除案例):
(1)放置删除按钮:

删除

(2)ajax指定处理器并传递数据

(3)处理方法
处理方法就不写了,处理的结果返回给$res。
if($res){
die(json_encode(array("rs"=>'success',"info"=>"删除成功"))); //json_encode()对变量进行 JSON 编码
}else{
die(json_encode(array("rs"=>'fail',"info"=>'删除失败')));
}


13.urlencode()和urldecode()
他们是用来解决网页URL编码解码问题,为的是让包含中文的URL可以使用。
$str = '我';
$str1 = urlencode($str);
$str2 = urldecode($str1);
echo $str1; // 输出:%e6%88%91 //编码
echo $str2; // 输出:我 //解码
?>

14.sprintf()
sprintf() 函数把格式化的字符串写入一个变量中。
$transAmt=10000000;
$transAmt = sprintf('%.2f',$transAmt);
echo $transAmt; //输出:10000000.00
?>

15.fopen() fwrite() fclose的用法
先看个例子:
$path = dirname(__FILE__);
$paths = $path.'/a.txt';
$content = '测试';
$handle = fopen($paths,'w+');
fwrite($handle, $content);
fclose($handle);
?>
运行一次,不过在$path路径下不存在a.txt文件,则会创建a.txt文件,w+是会把文件里面内容清空,重新写入。每次运行,都会清空原来的a.txt里面的数据,重新写入。
如果要追加的方法,即里面内容不清楚,继续添加,可用a,即,$handle = fopen($paths,'a');
"r" 只读方式打开,将文件指针指向文件头。
"r+" 读写方式打开,将文件指针指向文件头。
"w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"x"
创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
"x+"
创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

12.file_put_contents()和file_get_contents()的用法
file_put_contents() 函数把一个字符串写入文件中。与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。该函数将返回写入到文件内数据的字节数
$path = dirname(__FILE__);
$paths = $path.'/a.txt';
$content = '测试';
//$handle = fopen($paths,'w+');
//fwrite($handle, $content);
//fclose($handle);
echo file_put_contents($paths,$content);//输出:30

$arr = array('a'=>1,'b'=>2);
file_put_contents($paths,var_export($arr,true));
?>

file_get_contents() 函数把整个文件读入一个字符串中。
header('Content-type:text/html;charset=utf-8');
$path = dirname(__FILE__);
$paths = $path.'/a.txt';
$content = '测试';
file_put_contents($paths,$content);
$str = file_get_contents($paths);
echo $str; //输出:测试
?>

16.flock()
flock() 函数锁定或释放文件。若成功,则返回 true。若失败,则返回 false。
flock(file,lock,block)
file 必需。规定要锁定或释放的已打开的文件。flock() 操作的 file 必须是一个已经打开的文件指针。
lock 必需。规定要使用哪种锁定类型。
block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。
要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。
$file = fopen("test.txt","w+"); //打开
// 排它性的锁定
if (flock($file,LOCK_EX)){ //锁定后
fwrite($file,"Write something"); //写入内容
// release lock
flock($file,LOCK_UN); //然后解锁
}else{
echo "Error locking file!";
}

fclose($file); //关闭
?>

17.unlink() unlink(filename,context)
unlink() 函数删除文件。若成功,则返回 true,失败则返回 false。
$file = "test.txt";
if (!unlink($file)){
echo ("操作错误");
}else{
echo ("删除成功");
}
?>

18.unset()
unset -- 释放给定的变量 在 PHP 4 中,unset() 不再是一个真正的函数:它现在是一个语句。这样就没有了返回值,试图获取 unset() 的返回值将导致解析错误。
$arr = array(
'a'=>1,
'b'=>2,
'c'=>3
);
unset($arr['b']);
echo '
';print_r($arr);  
?>
输出:
Array
(
[a] => 1
[c] => 3
)

19.var_export()
var_export ? 输出或返回一个变量的字符串表示
此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。
$arr = array(
'a'=>1,
'b'=>2,
'c'=>3
);
var_dump($arr); //输出: array(3) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) }
var_export($arr); //输出: array ( 'a' => 1, 'b' => 2, 'c' => 3, )

$v = var_export($arr,TRUE); //第二个参数设置为 TRUE,从而返回变量的表示
echo $v; //输出 array ( 'a' => 1, 'b' => 2, 'c' => 3, )
?>

20.serialize()和unserialize()
serialize ? 产生一个可存储的值的表示 serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。 这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
unserialize ? 从已存储的表示中创建 PHP 的值。 想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。
具体看例子:
$str = 'abcdefg';
$str1 = serialize($str);
$str2 = unserialize($str1);
echo $str1; //输出:s:7:"abcdefg";
echo $str2; //输出:abcdefg

$arr = array(
'a'=>1,
'b'=>2,
'c'=>3
);
$string = serialize($arr);
$arr2 = unserialize($string);
echo $string; //输出:a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;}
print_r($arr2); //输出:Array ( [a] => 1 [b] => 2 [c] => 3 )
?>


21.rand()
rand() 函数返回随机整数。
echo rand(0,100); // 输出0-100的随机整数
?>

22.preg_match()
http://developer.51cto.com/art/200911/165362.htm

$num = $this->input->post('buy_num');
$preg = '/^[1-9][0-9]*$/';
if(!preg_match($preg, $ct_id) || !preg_match($preg, $num)){
echo '';
die();
}
23.str_replace()
str_replace() 函数使用一个字符串替换字符串中的另一些字符。
echo str_replace("world","John","Hello world!"); //输出:Hello John!
?>
$str = '123456789';
$new_str = str_replace("'","",$str);
echo $new_str;//输出123456789 //将' 替换为空
?>


24.preg_match()
在php中preg_match()函数是用来执行正则表达式的一个常用的函数
例子1:
如在开发中要判断表达提交过来的手机号码是否符合我们的要求,可用他来判断
if(!preg_match("/^1[3578][0-9]{9}$/", $_POST['phone_tel'])){
$this->show_warning('phone_error');
return;
}
?>
例子2:
判断是否为邮箱
if(!preg_match('/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/', $_POST['email'])){
echo "";
}

25.curl_init() url_init -- 初始化一个CURL会话
curl_init()函数将初始化一个新的会话,返回一个CURL句柄供curl_setopt(), curl_exec(),和 curl_close() 函数使用。如果可选参数被提供,那么CURLOPT_URL选项将被设置成这个参数的值。你可以使用curl_setopt()函数人工设置。
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "网站地址");
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
?>

public function request_by_curl($remote_server, $post_array)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_array);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Errno'.curl_error($ch);//捕抓异常
exit;
//print_r(curl_getinfo($ch));
}
curl_close($ch);
return $result;
}
?>