• 技术文章 >后端开发 >php教程

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

    2016-06-23 13:38:40原创265
    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 <= $end_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;
    }
    ?>
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:图片文件,缓存文件等,有必要分很多文件夹吗? 下一篇:请问后台的右栏和左栏怎么怎么关联的,用PHP读取写入还是JS?
    Web大前端开发直播班

    相关文章推荐

    • PHP页面跳转几种兑现技巧• 求php抓取N多相仿链接页面中的数据并存储的方法• 关于数据库查询更新的有关问题• PHP中对缓冲区的统制实现代码• php中header执行后没有输出,该怎么解决

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网