php学习_php学习路线 - CSDN
精华内容
参与话题
  • Php全套教程,Php学习路线图

    千次阅读 多人点赞 2018-12-13 14:18:18
    对于初学者,大家都需要一套比较完整并且系统的教程,帮助自己走进php大门,为此小编特整理了,这一套php学习教程,只要按照此学习教程学习,一定可以事半功倍,收获良好的学习效果! 先来一张php学习线路图: 第...

    PHP在web领域可谓是应用广泛,大多数网站都是PHP编写的,现在比较火的app开发也可以用PHHP做后端处理。并且PHP相对于其他语言简单,好上手,更适合零基础的人学习。

    对于初学者,大家都需要一套比较完整并且系统的教程,帮助自己走进php大门,为此小编特整理了,这一套php学习教程,只要按照此学习教程学习,一定可以事半功倍,收获良好的学习效果!

    先来一张php学习线路图:

    第一阶段:

    推荐视频:

    PHP基础视频_html+css+js :http://pan.baidu.com/s/1o8uaS2m

    javascript+jQuery:http://pan.baidu.com/s/1i54u19r

    html+css+bootstrap:http://pan.baidu.com/s/1bp7U5Oj

    Php轻松入门视频:http://pan.baidu.com/s/1i5mJ4pf

    第二阶段:

    6天玩转MySQL:http://pan.baidu.com/s/1mhYXBM4

    PHP核心编程视频教程: http://pan.baidu.com/s/1jImQGRk

    第三阶段:

    基于PHP面向对象的自定义MVC框架高级项目开发 :http://pan.baidu.com/s/1jHIVrTW

    Smarty入门视频课程免费分享: http://pan.baidu.com/s/1c1AufhI

    第四阶段:

    SVN视频教程无偿分享 : http://pan.baidu.com/s/1hrNdkv6

    2017XML视频教程 : https://pan.baidu.com/s/1i46ghH7    

    2017AJAX系列视频教程: http://pan.baidu.com/s/1boK52GZ

    ThinkPHP开发框架2016版: http://pan.baidu.com/s/1c6A9Ue

    2016最新Linux系列视频教程免费分享: http://pan.baidu.com/s/1o77XMPG

    第五阶段

    NoSQL之Redis技术 :http://pan.baidu.com/s/1o8Ixz7O

    PHP微信接口开发 : http://pan.baidu.com/s/1eSigal0

    mongodb实操视频 : http://pan.baidu.com/s/1i5frYV7 

    第六阶段:

    珍贵HyBrid App视频免费分享 :http://pan.baidu.com/s/1gf7MuR5

    2016基于laravel框架app软件开发: http://pan.baidu.com/s/1qXSmNJQ

    展开全文
  • PHP学习心得

    万次阅读 多人点赞 2017-08-18 23:27:16
    学习PHP有半个月了。每天都要打代码and写笔记。学过C和Java,在学习PHP的过程中比较顺利吧 (^-^) 代码打得越多,运行得越多,慢慢得会对程序理解得越深。下面就讲讲我学习PHP的心得。 PHP入门很容易,语法很简单...

    学习PHP有半个月了。每天都要打代码and写笔记。学过C和Java,在学习PHP的过程中比较顺利吧 (^-^) 代码打得越多,运行得越多,慢慢得会对程序理解得越深。下面就讲讲我学习PHP的心得。
    PHP入门很容易,语法很简单,但我不说PHP很容易。难易都是相对的,相对于Java来说PHP确实要简单些,但也不是花一点时间就可以学好的。先了解一下PHP是什么?PHP能做什么?为什么选择学习PHP呢?如果以后想走PHP,就努力专一花大量的时间深学它,不要有这种精几门编程语言的心态。
    最开始学习PHP的时候应该搭建一个LAMP或者WAMP环境。虽然网上有很多集成环境,安装也很方便,但我还是选择的自己搭建PHP环境。我觉得手动搭建环境比较灵活,对整个环境也会有更深的理解,对后期的学习也有帮助吧。当看见浏览器出现It works!,还是挺高兴的 o(≧v≦)o~~
    这里写图片描述
    然后学习PHP的基础知识和技术。这些知识大概有语言基础、字符串、数组、正则表达式、与web页面交互、加密、面向对象、会话等等,花了几天的时间来学习。不管学什么语言,基础都是最重要的。在语法上感觉php跟javascript也有一些相似之处。随着学习的知识不断增多,不懂的问题也开始出现,一直有写笔记的习惯。主要是一些自己的总结,收藏的博客,重复代码块等等。
    这里写图片描述
    再接下来接触到数据库。PHP支持多种数据库,尤其与MySQL关系最好。刚开始学习数据库基础的时候,还是建议大家在命令提示符下操作数据库。虽然有MySQL图形化管理工具,但是一开始不要太过于依赖它了。PHP提供了mysql扩展和mysqli扩展,用来操作数据库,前者已经被废除。还有就是对所有数据库都通用的一个扩展PDO,它屏蔽了各种数据库系统的差异,使用同一个接口来访问各种数据库。就像Java的JDBC那样,很方便程序从不同数据库之间的移植。
    在这里还要提到有关数据库的一些函数封装,我们用一般方法进行数据库操作要分开写很多方法。用面向对象的方法会增强开发效率。可以从网上找一些源代码来研究。另外还要注意MySQL的优化,让数据库尽量用更少的时间 找到我们需要的东西。
    还有就是调试程序的技巧,比如说可以分段echo结果,缩小调试范围,特别是在与数据库交互的时候,先输出SQL语句看看,再分析怎么会操作不成功等等。调试程序可能会占用很多的时间,当然还是要总结自己的调试经验。

    展开全文
  • PHP学习笔记(一)--基础知识

    千次阅读 2018-11-24 14:12:43
    如果运行输出窗口中文为乱码,则可以右击工程文件,”Properties’à”PHP Debug”à”Encoding Setting”,设置为”GBK”(如果下拉选项没有”GBK”,可以手动输入),如下:   注意:如果页面及php使用utf-...

    1、编译器中出现中文乱码

    如果编辑环境中输入的中文编程乱码,可以在“Edit”à”Set Encoding”,设置编码为“GBK”,如下:

    如果运行输出窗口中文为乱码,则可以右击工程文件,”Properties’à”PHP Debug”à”Encoding Setting”,设置为”GBK”(如果下拉选项没有”GBK”,可以手动输入),如下:

     

    注意:如果页面及php使用utf-8编码,则获取的数据库数据会变成乱码,sql server默认编码为gb2312。

    2、变量及注释

    1)注释

    注释有三种:

    //用于单行注释,注释内容中不可出现?>

    /*  */用于多行注释

    #用于单行注释

    2)变量类型

    PHP中有8种变量类型:boolean,integer,float/double,string,array,object,resource和null;

    PHP中变量类型不是由程序设定,而是PHP根据程序运行上下文确定;

    PHP中变量都是以$符号开头;

    字符串变量定义可以使用’(单引号)也可以使用”(双引号),一般定义字符串建议使用单引号,在单引号定义的字符串为原生字符串,转义符号不再具有转义作用,并且变量放在单引号字符串中不会将变量替换成实际的数值;

    如果定义的数值超过了int所能表示的最大范围,将会被单做float类型处理。如果表达式运算最后结果超出了int范围也会返回float型;

    可变变量是一种独特的变量,它允许动态的改变一个变量的名称,改变量的名称由另外一个变量的值来确定;

    PHP中连接两个字符串使用.(点号),而不能使用+(加号);

    如果“+”号两边有字符类型,则自动转换为整型。如果是字母则输出0,如果以数字开头的字符串,自会截取字符串头部的数字再进行运算。

     

    【例1】变量定义

    <?php

        $name='i love php!';

        echo '$name';//输出$name

        echo "$name";//输出i love php!

       

        echo "hello\nworld";//\n为转义字符

        echo 'hello\nword';//\n原样输出

       

        $number1=123;//定义十进制整数

        $number2=0123;//定义八进制整数

        $number3=0x123;//定义十六进制整数

        $number4=0.123;//定义浮点数

        $number5=2.3E+3;//$number5=2300

        $number6=2.3E-2;//$number6=0.023

       

        $array1=array('武汉','广州','南京');//定义一维数组

        $array2=array(0=>'php',1=>'c#',2=>'java');//定义一维数组

        echo '<p>';//段楼开始标记

        echo $array1[1];//输出广州

        echo '<br/>';//换行符

        echo $array2[0];//输出php

        echo '</p>';//段落结束标记

       

    $num1='5.23r*r';

        $num2=1;

        echo $num1+$num2;//输出6.23

    ?>

     

    【例2】引用、静态变量及全局变量

    <?php

        $str1="hello";

        $str2=$str1;//变量赋值

        $str2=& $str1;//引用赋值

        static $name='C#';//静态变量

       

        $score=80;

        function f(){

           $score=100;

           echo $score.'<br/>';//输出100

           global $score;//定义全局变量

           echo $score;//输出80

        }

        f();//调用函数

    ?>

     

    【例3】可变变量

    <?php

        $name='wit';

        $wit='hello,word';

        echo $name.'<br/>';//输出wit

        echo $$name;//输出hello,word

    ?>

     

     

    3、常用函数

     

    函数

    说明

    is_null()

    判断是否为空,当变量值为null,””(空串)或者0等时返回true

    unset()

    销毁指定的变量

    settype(mixed var,string type)

    将指定的变量转换成指定的数据类型,settype($num,’integer’)

    is_bool()

    检测变量是否为布尔类型

    is_integer()/is_int()

    检测变量是否为整型

    is_float()/is_double()

    检测是否为浮点型

    is_array()

    检测变量是否为数组类型

    is_object()

    检测变量是否为对象类型

    is_numeric()

    检测变量是否为数字或者由数字组成的字符串

    var_dump()

    输出变量的相关信息,$age=12;var_dump($age)输出int(12)

    rand(int mix,int max)

    产生一个[mix,max]之间的随机整数,如果每餐参数则返回[0,RAND_MAX]之间的随机整数

    iconv($in_charset, $out_charset, $str)

    转换编码,in_charset为原来编码,out_charset为转换后的编码,$str为要转换的字符串

     

    4、常量

    1)定义常量,语法:

    define(string constant_name,mixed_value,case_sensitive=true);

    说明:第一个参数为常量名,第二个参数为常量值,第三个参数表示是否对大小写敏感(可选)。

    2)获取常量的值,语法:

    mixed constant(string const_name);

    也可以通过常量名直接获取常量的值.

    3)判断一个常量是否定义,语法:

    bool defined(string const_name);

     

    示例:

    <?php

        define("$PI", 3.1415926);

        if(defined("$PI"))

        {

           echo $PI."<br/>";

           echo constant("$PI");

        }

    ?>

     

    系统预定义的一些常量:

    <?php

        echo constant("__FILE__");//输出PHP文件名

        echo constant(_LINE_);//输出PHP程序行数

        echo constant(PHP_VERSION);//PHP程序的版本

        echo constant(PHP_OS);//P执行PHP解析器的操作系统名

    ?>

     

    5、运算符

    位运算符

    运算符

    含义

    运算符

    含义

    &

    按位与

    |

    按位或

    ~

    按位非

    ^

    按位异或

    <<

    左移位

    >>

    右移位

     

    逻辑运算符

    运算符

    含义

    运算符

    含义

    &&

    逻辑与

    ||

    逻辑或

    !

    逻辑非

    xor

    逻辑异或

     

    比较运算符

    运算符

    含义

    运算符

    含义

    >

    大于

    >=

    大于等于

    <

    小于

    <=

    小于等于

    ==

    等于

    !=

    不等

    ===

    恒等于

    !==

    非恒等

    $a====$b要求$a与$b的值相等且变量类型相同;$a!==$b表示$a与$b的值不等或者类型不同。

     

    错误控制符@

    示例:

    <?php

        $num1=12;

        $num2=$num1/0;//会输出警告信息

        $num3=@($num1/0);//不会输出任何信息

    ?>

     

    三元运算符?:

    示例:

    <?php

        $num1=12;

        echo $num1%2==0 ? '偶数' : '奇数';

    ?>

     

    6、定义函数

    当函数使用默认参数时,默认参数必须放在非默认参数的后面;

    变量函数是通过改变变量名实现的;

    对函数的引用必须在两个地方都使用“&”符,用来说明返回的是引用。

    示例:

    <?php

        function fun1()

        {

           echo '函数fun1被调用';

        }

        function fun2($r){

           return 2*pi()*$r;

        }

        function fun3(& $num){//参数为引用类型

           $num=3;

        }

        function fun4($num1,$num2=2){//带默认参数的函数

           return $num1+$num2;

        }

        function come(){

           echo '函数come被调用';

        }

        function back($name){

           echo "$name";

        }

    function &fun5($area){//对函数的引用

           return 2*$area;

        }

        fun1();

        fun2(3);

        $r=1;

        fun3($r);

        echo $r;//输出3

        $res=fun4(10);

        echo $res;

        $func="come";

        $func();//使用变量函数来调用come()

        $func="back";

        $func("lily");//使用变量函数来调用back("lily")

    $area=&fun5(5);//对函数的引用

    unset($area);//取消引用fun5

        echo $area;

    ?>

    注:可以使用unset()方法取消对变量或者函数的引用。

     

    7、流控制语句

    【例1】if else结构

    <?php

        $num=rand(1,3);

        if ($num==1) {

           echo '最小值';

        }

        elseif ($num==2){

           echo '中间值';

        }

        else {

           echo '最大值';

        }

    ?>

     

    【例2】while,do while结构

    <?php

        $num=rand(1,3);

        do {

           $num+=1;

           echo $num;

        }while ($num<3);

        echo '<br/>';

        while ($num>3){

           $num-=1;

           echo $num;

        }

    ?>

     

    【例3】switch case结构

    <?php

        $num=rand(1,4);

        switch ($num){

           case 1:

               echo '最小值';

               break;

           case 2:

               echo '中间值';

               break;

           case 3:

               echo '最大值';

               break;

           default:

               echo '不合要求';

        }

    ?>

     

    【例4】foreach结构

    foreach语法格式:

    foreach(array_expression as $value)

    foreach(array_expression as $key=>$value)

     

    <?php

        $numArray=array(1,2,3,5);

        foreach ($numArray as $num){

           echo $num.';';

        }

        echo '<br/>';

        $name=array("1"=>"智能机器人","2"=>"数码相机","3"=>"手机");

        foreach ($name as $key=>$value){

           echo ':'.$key.';:'.$value.'<br/>';

        }

    ?>

     

    【例5】流程控制语句另一种写法

    使用“:”(冒号)代替左边的大括号“{”,使用endif;、endwhile;、endfor;、endforeach;和end switch;代替右边的大括号“}”。

     

    <?php

        $numArray=array(1,2,3,5);

        for($index=0;$index<count($numArray);$index++):

           echo $numArray[$index].';';

        endfor;

        echo '<br/>';

        $name=array("1"=>"智能机器人","2"=>"数码相机","3"=>"手机");

        foreach ($name as $key=>$value):

           echo ':'.$key.';:'.$value.'<br/>';

        endforeach;

    ?>

     

    【例6】使用break、continue跳出循环语句

    break N;可以跳出N重循环

    continue N;可以跳出N重循环

    <?php

        $arr=array("A","B","C","D","E","F","G","H","I","J");

        for($i=0;$i<10;$i++){

           echo '<br/>';

           if($i%2==0){

               continue;

           }

           for($j=0;$j<count($arr);$j++){

               if($i==$j){

                  continue 2;

               }

               else {

                  echo 'arr['.$j.']='.$arr[$j].' ';

               }

           }

        }

    ?>

    输出结果为:

     

    8、字符串操作

    1. 去除空格或特殊字符
    • trim(string str[,string charlist]);     

    说明:用于去除首尾空格或特殊字符,如果不设置参数charlist则所有的可选字符都将被删除

    charlist可选值

    可选值

    说明

    可选值

    说明

    \0

    null,空值

    \0xB

    垂直制表符

    \t

    ab,制表符

    \r

    回车符

    \n

    换行符

    “ ”

    空格

    除了上面的可选值外还尅在charlist参数中设置要去除的自己定义的字符。

     

    • ltrim(string str[,string charlist]);

    说明:去除字符串左边的空格和特殊字符

    • rtrim(string str[,string charlist]);

    说明:去除字符串右边的空格和特殊字符

     

    示例:

    <?php

        $value='(:@i love php!#:)';

        echo trim($value,"(:@#:)");//输出i love php!

        echo '<br/>';

        echo ltrim($value,"(:)");//输出@i love php!#:)

        echo '<br/>';

        echo rtrim($value,"#:)");//输出(:@i love php!

    ?>

     

    1. 转义与还原字符串
    • string addslashes(string str)函数用来转义字符串;
    • striing stripsslashes(string str)函数用来将addslashes()函数转义后的字符串还原。

    注:所有数据在插入到数据库之前应该进行转义,避免注入式攻击。

    示例:

    <?php

        $str="select * from student where name='php'";

        echo addslashes($str);//输出select * from student where name=\'php\'

        echo stripslashes(addslashes($str));//输出select * from student where name='php'

        $str2="select * from student where name=\'php\'";

        echo addslashes($str2);//输出select * from student where name=\\\'php\\\'

        echo stripslashes($str2);//输出select * from student where name='php'

    ?>

     

    • string addcslashes(string str,string charlist)

     参数str为要转义的字符串,charlist指定在字符串中的哪些字符前加上转义符“\”,如果charlist中包含\n,\r等字符则将以C风格进行转换,而其它非字母数字且ASCII低于32或高于126的字符均转换成八进制表示。

    • striing stripcsslashes(string str)函数用来将addslashes()函数转义后的字符串还原。

    用来将addcslashes()转义的字符串还原。

     

    示例:

    <?php

        $str="select * from student where name='张三'";

        $res=addcslashes($str,"张三");

        echo $res;//输出select * from student where name='\325\305\310\375'

        echo '<br/>';

        echo stripcslashes($res);//输出select * from student where name='张三'

        echo '<br/>';

        $str2=addcslashes($str,"from");

        echo $str2;//输出select * \f\r\o\m student whe\re na\me='张三'

        echo '<br/>';

        echo stripcslashes($str2);//输出select * om student whe e name='张三'

    ?>

    注:一般对缓存数据的值采用addcslashes()函数进行指定范围的转义

     

    1. 截取字符串及比较字符串
    • int strlen(string str)获取字符串长度
    • string substr(string str,int start[,int length])

    参数

    说明

    str

    指定字符串对象

    start

    指定开始截取字符串的位置。如果参数start为负,则从字符串的末尾开始截取。从0开始计数。

    length

    可选参数,指定截取字符的个数,如果为负数,则表示取到倒数第length个字符

    注:使用substr()函数截取中文字符串,如果截取的字符串个数是奇数,会导致出现乱码。

     

    示例:

    <?php

        $str="I love php";

        echo substr($str, 2,strlen($str)-2);//输出love php

        echo '<br/>';

        echo substr($str, -3,3);//输出php,从倒数第3个字符开始截取,截取长度为3

        echo '<br/>';

        echo substr($str, 2,-1);//输出love ph,从第二个开始截取,取到倒数第1

    ?>

     

    • int strcmp(string str1.string str2);

    如果str1大于str2则返回值大于0,如果str1等于str2则返回值等于0,否则返回值小于0.比较区分大小写。

     

    • int strcasecmp(string str1.string str2);

    与strcmp不同的时,该函数不区分大小写。

     

    • int strnatcmp(string str1.string str2);

    按照自然排序法进行字符串的比较。自然排序法比较是字符串中的数字部分,将字符串中的数字按照大小进行比较。区分大小写。

     

    • int strncmp(string str1.string str2);

    比较字符串中的前n个字符。

     

    示例:

    <?php

        $str1="I love php";

        $str2="I like php";

        echo strcmp($str1, $str2);//输出1

        echo '<br/>';

        echo strncmp($str1, $str2,3);//输出0

        echo '<br/>';

       

        $str1="I love php12";

        $str2="I love php3";

        echo strcmp($str1, $str2);//输出-1

        echo '<br/>';

        echo strnatcmp($str1, $str2);//输出1

        echo '<br/>';

    ?>

     

    1. 检索字符串与替换字符串
    • string str(string source,string needle);

    获取source中needle首次出现的位置到needel末尾的子字符串。如果执行成功返回子字符串,否则返回false.区分大小写

    <?php

        $source="I love php";

        $needle="ve";

        echo strstr($source, $needle);//输出ve php

    ?>

     

    • mixed  str_ireplace(mixed search,mixed replace,mixed subject[,int &count]);

    说明:在subject中使用replace替换search。在替换时不区分大小写

     

    • mixed  str_replace(mixed search,mixed replace,mixed subject[,int &count]);

    说明:在subject中使用replace替换search。在替换时区分大小写

    <?php

        $str="武汉大学";

        $search="武汉";

        $replace="**";

        $result=str_replace($search, $replace,$str);

        echo $result;//输出**大学

    ?>

     

    • string substr_replace(string str,string repl,int start[,int length]);

    参数说明:

    参数

    说明

    str

    要操作的原始字符串

    repl

    指定替换后的新字符串

    start

    指定替换字符串的开始位置。正数表示起始位置从字符串开头开始,负数表示起始位置从字符串的结尾开始。0表示起始位置的第一个字符

    length

    可选参数,指定替换字符串的长度。默认是整个字符串。整数表示起始位置从字符串开头开始,负数表示起始位置从字符串的结尾开始。0表示插入而非替换

     

    <?php

        $str="武汉某某大学";

        $repl="广州";

       

        $result=substr_replace($str, $repl,0,8);

        echo $result;//输出广州大学,一个汉字占两个字符

        echo '<br/>';

        $result=substr_replace($str, $repl, -2,4);

        echo $result;//输出武汉某某大广州

       

        echo '<br/>';

        $result=substr_replace($str, $repl, 0,0);

        echo $result;//输出广州武汉工程大学

       

        echo '<br/>';

        $result=substr_replace($str, $repl, 0,-4);

        echo $result;//输出广州大学

    ?>

     

    1. 分割与合并字符串
    • array explode(string separator ,string str[,limit]);

    参数说明:

    参数

    说明

    separator

    指定的分割的标识符,如果separator所包含的值在str中找不到,则返回包含str单个元素的数组

    str

    指定要进行分割的字符串

    limit

    可选参数,如果设置了limit参数,则返回的数组中包含最多limit个元素,而最后的元素将包含str的剩余部分;如果limit是负数,则返回除了最后的-limit个元素以外的所有元素

     

    • string implode(string glue,array pieces );

     

    示例:

    <?php

        $str='PHP编程@java程序设计@C++语法';

        $arr=explode("@",$str);

        print_r($arr);//数组有3个元素:PHP编程;java程序设计;C++语法

        $res=implode("#",$arr);

        print_r($res);//$res=PHP编程#java程序设计#C++语法

    ?>

     

    9、POSIX扩展正则表达式函数

    • bool ereg/eregi(string pattern,string str[,array regs])

    参数说明:

    在字符串str中匹配表达式pattern,如果匹配成功返回true,否则返回false。如果有第3个参数,则将成功匹配的字符串按子串划分并存储到regs数组中。ereg()区分大小写,eregi()不区分大小写。

    <?php

        $ereg='^[$][[:alpha:]_][[:alnum:]]*';

        ereg($ereg,'$_name',$register);

        print_r($register);//输出Array ( [0] => $_name )

    ?>

     

    • string ereg_replace/eregi_replace(string pattern,string replacement,string str)

    在字符串str中匹配pattern表达式,匹配成功后替换为replacement,并返回替换后的字符串。

     

    • string split/spliti(string pattern,string str[,int limit])

    使用表达式pattern分割字符串str。如果有参数limit,则返回的数组中包含最多limit个元素,而最后的元素将包含str的剩余部分;如果limit是负数,则返回除了最后的-limit个元素以外的所有元素。

     

    10、PRICE兼容正则表达式函数

    • array  preg_grep(string pattern,array input)

    使用数组中的元素一一匹配表达式pattern,最后返回所有相匹配的元素组成的数组。

    示例:

    <?php

        $preg='/\d{3,4}-?\d{7,8}/';

        $arr=array('0131231231','7980009-12312','909-12345678');

        $preg_arr=preg_grep($preg, $arr);

        print_r($preg_arr);//输出Array ( [0] => 0131231231 [2] => 909-12345678 )

    ?>

     

    • int  preg_match/preg_match_all(string pattern ,string subject[, array matches]);

    在字符串subject中匹配表达式pattern。函数返回匹配成功的次数。如果有数组matches,则每次匹配的结果都存储到数组matches中。preg_match返回的值是0或者1,如果匹配成功就停止,preg_match_all一直匹配到最后。

    <?php

        $preg='/\b\w{2}\b/';

        $str='This is an example';

        $num1=preg_match($preg, $str,$str1);

        echo $num1.'<br/>';

        print_r($str1);

        echo '<br/>';

        $num2=preg_match_all($preg, $str,$str2);

        echo $num2.'<br/>';

        var_dump($str2);

    ?>

     

    • string  preg_quote(string str [, string delimiter]);

    将字符串str中的所有特殊字符进行自动转义。如果有参数delimiter,那么参数所包含的字符也将被转义,返回转义后的字符串。

    <?php

        $str1='!$@#+[yu';

        $str2='u';

        $res=preg_quote($str1,$str2);

        echo $res;

    ?>

    结果:

    注:这里的特殊字符是值正则表达式中具有一定意义的元字符,其它如“@”、“#”等不会被当作特殊字符处理。

     

    • mixed preg_replace(mixed pattern ,mixed replacement ,mixed subject [, int limit]);

    在字符串subject中匹配表达式pattern,如果匹配成功用replacement替换,如果设置参数limit,则替换limit次。

     

    • mixed preg_replace_callback(mixed pattern ,callback callback ,mixed subject [, int limit]);

    与preg_replace作用相同,不同的是preg_replace_callback使用一个回调函数(callback)来代替replacement参数。

    <?php

        function c_back($str){

           $str="<font color=$str[1]>$str[2]</font>";

           return $str;

        }

        $string ='[color=blue]字体颜色[/color]';

        echo preg_replace_callback('/\[color=(.*)\](.*)\[\/color\]/U', "c_back", $string);//输出字体颜色,并且速出内容为蓝色字体

    ?>

     

    • array  preg_split(string pattern,  string subject [, int limit]);

    使用表达式pattern来分割字符串subject。如果有参数limit,那么数组最多有limit元素。使用与split()函数相同。

     

    11、数组

    PHP中数组分为索引数组和关联数组。索引数组用数字作为键,关联数组 用字符串作为键;

    默认数组下标从1开始;

    使用list()函数可以遍历数组,list()函数不是真正的函数,是一种语言结构。list()函数仅能用于数字索引且索引值从0开始的数组。

    【例1】一维数组定义及遍历

    <?php

        $arr1=array('张三','李斯','赵柳');//索引数组

        print_r($arr1);

        echo '<br/>';

       

        $arr2=array(1=>'武汉',2=>'广州',3=>'深圳');

        for ($index=1;$index<=count($arr2);$index++){

           echo $arr2[$index].';';

        }

        echo '<br/>';

       

        $arr3=array('hight'=>'优秀','middle'=>'','low'=>'');//关联数组

        foreach ($arr3 as $key=>$value){//输出

           echo ':'.$key.';:'.$value.'<br/>';

        }

       

        //$arr4=arry();

        $arr4[0]='C++';

        $arr4[1]='C#';

        $arr4[2]='php';

        $arr4[3]='javascript';

        foreach ($arr4 as $value){//输出

           echo $value.'<br/>';

        }

     

        while (list($name,$value)=each($arr4)){//输出

           echo '<'.$name.','.$value.'><br/>';

        }

     

    ?>

    注:each()函数用于返回当前指针位置的数组值,同时将指针推进到下一个位置返回的数组包含4个键,键0和key包含键名,而键1和value包含相应的数据。如果程序在执行each()函数时指针已经位于数组末尾,则返回false.

     

    【例2】二维数组定义及遍历

     

    <?php

        $arr1=array(array('张三','李斯','赵柳'),array(1=>'武汉',2=>'广州',3=>'深圳'));//索引数组

        print_r($arr1);

        echo '总共有【'.count($arr1,COUNT_RECURSIVE).'】个元素';//结果为8

        echo '<br/>';

       

    $arr3=array('hight'=>array(80,90,100),'middle'=>array(60,70),'low'=>array(50,40,30,20,10));//关联数组

        print_r($arr3);

       

    ?>

    注:使用count()函数统计数组元素个数时,如果第二个参数取值为1(COUNT_RECURSIVE),则使用递归方式统计。对于二维数组来说必须使用1(COUNT_RECURSIVE).缺省为0.

     

    【例3】查询数组中指定元素

    <?php

        $arr1=array(array('张三','李斯','赵柳'),array(1=>'武汉',2=>'广州',3=>'深圳'));//索引数组

        echo array_search('广州',$arr1[1]);//返回2

    ?>

     

    【例4】获取数组最后一个元素及向数组中添加元素

    array_pop()函数获取并返回数组的最后一个元素,并将数组的长度减一。

    <?php

        $arr1=array('张三','李思','南京','广州','武汉');

        echo array_pop($arr1);//输出武汉

        echo '<br/>';

        print_r($arr1);//输出Array ( [0] => 张三 [1] => 李思 [2] => 南京 [3] => 广州 )

        array_push($arr1, '长沙','珠海');

        print_r($arr1);

    ?>

     

    【例5】删除数组中重复的元素

    array_unique()删除数组中重复元素并返回删除重复元素后的数组,注意:原数组内容不变。

    <?php

        $arr1=array('武汉','广州','南京','广州','武汉');

        array_push($arr1, '南京','珠海');

        $arr2=array_unique($arr1);

        print_r($arr2);//输出Array ( [0] => 武汉 [1] => 广州 [2] => 南京 [6] => 珠海 )

    ?>

     

    12、日期与时间

    1. 获取时间戳

    默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。

    • int mktime(int hour, int minute, int second, int month, int day, int year, int[id_list])

    该函数返回一个长整数的时间戳,从1970年1月1日到给定时间的秒数。

    <?php

        echo '返回时间戳'.mktime().'<p>';

        echo '当前日期:'.date("Y-m-d",mktime()).'<p>';//输出2015-01-29

        echo '当前时间:'.date("H:i:m",mktime());

    ?>

     

    • time()用于返回当前时间的时间戳,不带任何参数。

    <?php

        echo '返回时间戳:'.time().'<p>';

        echo '当前日期:'.date("Y-m-d",time()).'<p>';

        echo '当前时间:'.date("H:i:m",time());

    $nextWeek=time()+(7*24*60*60);//在当前时间戳上加上一周的时间

        echo date("Y-m-d",$nextWeek);

    ?>

     

    1. 获取日期及时间
    • date(string format[,int timestamp])

    说明:

    大写Y表示年四位数字,而小写y表示年的两位数字;

    小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。

    大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);

    没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。

    大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)

    大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。

    小结:

    表示年可以用大写的Y和小写y;

    表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);

    表示日可以用小写d和小写j,大写S表示日期的后缀。

    小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。

    当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。

    大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数

    小结:

    字母g表示小时不带前导,字母h表示小时带前导;

    小写g、h表示12小时制,大写G、H表示24小时制。

    <?php

        echo date("y-m-d h:i:s").'<p>';//15-01-29 04:39:22

        echo date("Y-n-j h:i:s").'<p>';//2015-1-29 04:39:22

        echo date("Y-M-D h:i:s").'<p>';//2015-Jan-Thu 04:43:40

        echo date("Y-F-jS h:i:s").'<p>';//2015-January-29th 04:45:41

        echo date("H:i:s").'<p>';//16:47:08

        echo date("g:i:s").'<p>';//4:47:08

        echo date("g:i:s A").'<p>';//4:47:08

    ?>

     

    大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;

    小写l表示当天是星期几的英文全写(Tuesday);

    而使用大写D表示星期几的3个字符缩写(Tue)。

    小写w表示星期几,数字形式表示

    大写W表示一年中的星期数

    小写t表示当前月份又多少天

    小写z表示今天是本年中第几天

    <?php

        echo date("L")."<p>";//0

        echo date('l')."<p>";//Thursday

        echo date('D')."<p>";//Thu

        echo date('w')."<p>";//2

        echo date('W')."<p>";//05

        echo date('t')."<p>";//31

        echo date('z')."<p>";//28

    ?>

     

    1. 获取日期及时间的信息
    • getdate() 函数取得日期/时间信息。

    getdate(timestamp)

     

    键名

    说明

    返回值例子

    "seconds"

    秒的数字表示

    0 到 59

    "minutes"

    分钟的数字表示

    0 到 59

    "hours"

    小时的数字表示

    0 到 23

    "mday"

    月份中第几天的数字表示

    1 到 31

    "wday"

    星期中第几天的数字表示

    0(表示星期天)到 6(表示星期六)

    "mon"

    月份的数字表示

    1 到 12

    "year"

    4 位数字表示的完整年份

    例如:1999 或 2003

    "yday"

    一年中第几天的数字表示

    0 到 365

    "weekday"

    星期几的完整文本表示

    Sunday 到 Saturday

    "month"

    月份的完整文本表示

    January 到 December

    0

    自从 Unix 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似。

    系统相关,典型值为从 -2147483648 到 2147483647。

     

    <?php

        $arr=getdate();

        echo $arr[year]."-".$arr[mon]."-".$arr[mday]."<p>";

        echo $arr[hours].":".$arr[minutes].":".$arr[seconds];

    ?>

     

    1. 检查日期是否合法
    • checkdate() 函数验证一个格里高里日期。

    日期在下列情况下为合法:

    month 介于且包括 1 - 12

    Day 的值在给定的 month 所应该具有的天数范围之内,闰年已经考虑进去了。

    year 介于且包括 1 到 32767

    参数

    描述

    month

    必需。规定月。

    day

    必需。规定日。

    year

    必需。规定年。

     

    <?php

        var_dump(checkdate(12,31,2000));//ture

        var_dump(checkdate(2,29,2003));//false

        var_dump(checkdate(2,29,2004));//true

    ?>

     

    1. 设置本地化环境

    string  setlocale(string  category [,string location])

    地区信息是针对一个地理区域的语言、货币、时间以及其他信息。

    参数category可取值如下:

    • LC_ALL - 包括下面的所有选项
    • LC_COLLATE -排序次序
    • LC_CTYPE - 字符类别及转换(例如所有字符大写或小写)
    • LC_MESSAGES - 系统消息格式
    • LC_MONETARY - 货币格式
    • LC_N

     

    <?php

        setlocale(LC_ALL,"en_US");//设置本地环境;

        echo "美国格式:".strftime("Today is %A");

        setlocale(LC_ALL,"chs");//设置本地环境;

        echo "中文简体格式:".strftime("Today is %A");

    ?>

    输出结果:

    1. 格式化输出日期和时间

    string strftime ( string $format [, int $timestamp = time() ] ) 函数根据区域设置格式化本地时间/日期。

    format 里能够识别的格式字串有以下标记:

    格式

    描述

    返回值示例

    ---

    ---

    %a

    当前区域星期几的简写

    Sun 到 Sat

    %A

    当前区域星期几的全称

    Sunday 到 Saturday

    %d

    月份中的第几天,十进制数字(范围从 01 到 31)

    01 到 31

    %e

    月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31') 在 Windows 上尚未按描述实现。更多信息见下方。

    1 到 31

    %j

    年份中的第几天,带前导零的三位十进制数(范围从 001 到 366)

    001 到 366

    %u

    符合 ISO-8601 星期几的十进制数表达 [1,7],1 表示星期一

    1 (星期一) 到 7 (星期日)

    %w

    星期中的第几天,星期天为 0

    0 (星期天) 到 6 (星期六)

    ---

    ---

    %U

    本年的第几周,从第一周的第一个星期天作为第一天开始

    13 (for the 13th full week of the year)

    %V

    %V - 本年第几周的 ISO-8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。)

    01 到 53 (where 53 accounts for an overlapping week)

    %W

    本年的第几周数,从第一周的第一个星期一作为第一天开始

    46 (for the 46th week of the year beginning with a Monday)

    ---

    ---

    %b

    当前区域月份的简写

    Jan 到 Dec

    %B

    当前区域月份的全称

    January 到 December

    %h

    当前区域月份的简写(%b 的别名)

    Jan 到 Dec

    %m

    两位数的月份

    01 (是一月份) 到 12 (是十二月份)

    ---

    ---

    %C

    两位数显示世纪(年份除以 100,截成整数)

    19 是 20 世纪

    %g

    2 位数的年份,符合 ISO-8601:1988 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。

    比如:2009年1月6日那一周是 09

    %G

    %g 的完整四位数版本

    比如:2009年1月3日那一周是 2008.

    %y

    两位数显示年份

    比如: 09 是 2009,79是 1979

    %Y

    四位数显示年份

    比如: 2038

    时间

    ---

    ---

    %H

    以 24 小时格式显示两位小时数

    00 到 23

    %I

    以 12 小时格式显示两位小时数

    01 到 12

    %l('L' 的小写)

    以 12 小时格式显示小时数,单个数字前含空格

    1 到 12

    %M

    两位的分钟数

    00 到 59

    %p

    指定时间的大写 “AM” 或 “PM”

    比如: 00:31 是 AM ,22:23 是PM

    %P

    指定时间的小写 “am” 或 “pm”

    比如:00:31 是 am ,22:23 是pm

    %r

    和 "%I:%M:%S %p" 一样

    比如: 21:34:17 是09:34:17 PM

    %R

    和 "%H:%M" 一样

    比如: 12:35 AM 是00:35,4:44 PM 是 16:44

    %S

    两位数字表示秒

    00 到 59

    %T

    和 "%H:%M:%S" 一样

    比如: 09:34:17 PM 是21:34:17

    %X

    当前区域首选的时间表示法,不包括日期

    例如: 03:59:16 或15:59:16

    %z

    从 UTC 的时区偏移 或 简写(由操作系统决定)

    比如: 东部时间是-0500 或 EST

    %Z

    %z 没有给出的 UTC 的时区偏移 或 简写(由操作系统决定)

    比如: -0500 或 EST 是东部时间

    时间和日期戳

    ---

    ---

    %c

    当前区域首选的日期时间表达

    比如: 2009 年 2 月 5 日上午 12:45:10 是 Tue Feb 5 00:45:10 2009

    %D

    和 "%m/%d/%y" 一样

    比如: 2009 年 2 月 5 日是 02/05/09

    %F

    Same as "%Y-%m-%d" (commonly used in database datestamps)

    比如:2009 年 2 月 5 日是 2009-02-05

    %s

    Unix纪元的时间戳(和 time() 函数一样)

    比如: 1979 年 9 月 10 日上午 8 点 40 分 00 秒是 305815200

    %x

    当前区域首选的时间表示法,不包括时间

    比如: 2009 年 2 月 5 日是 02/05/09

    其他

    ---

    ---

    %n

    换行符("\n")

    ---

    %t

    Tab 字符("\t")

    ---

    %%

    文字上的百分字符("%")

    ---

     

    <?php

        setlocale(LC_TIME, "C");

        echo strftime("%A")."<p>";

        setlocale(LC_TIME, "fi_FI");

        echo strftime(" in Finnish is %A,")."<p>";

        setlocale(LC_TIME, "fr_FR");

        echo strftime(" in French %A")."<p>";

        setlocale(LC_TIME, "de_DE");

        echo strftime(" in German %A.\n");

    ?>

     

    1. 将日期和时间解析为时间戳

    int strtotime ( string $time [, int $now ] )

    strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

    一,获取指定日期的unix时间戳 strtotime("2009-1-22") 示例如下:

    echo strtotime("2009-1-22") 结果:1232553600

    说明:返回2009年1月22日0点0分0秒时间戳

    二,获取英文文本日期时间 示例如下:

    便于比较,使用date将当时间戳与指定时间戳转换成系统时间

    (1)打印明天此时的时间戳strtotime("+1 day")

    当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

    指定时间:echo date("Y-m-d H:i:s",strtotime("+1 day")) 结果:2009-01-23 09:40:25

    (2)打印昨天此时的时间戳strtotime("-1 day")

    当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

    指定时间:echo date("Y-m-d H:i:s",strtotime("-1 day")) 结果:2009-01-21 09:40:25

    (3)打印下个星期此时的时间戳strtotime("+1 week")

    当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

    指定时间:echo date("Y-m-d H:i:s",strtotime("+1 week")) 结果:2009-01-29 09:40:25

    (4)打印上个星期此时的时间戳strtotime("-1 week")

    当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

    指定时间:echo date("Y-m-d H:i:s",strtotime("-1 week")) 结果:2009-01-15 09:40:25

    (5)打印指定下星期几的时间戳strtotime("next Thursday")

    当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

    指定时间:echo date("Y-m-d H:i:s",strtotime("next Thursday")) 结果:2009-01-29 00:00:00

    (6)打印指定上星期几的时间戳strtotime("last Thursday")

    当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

    指定时间:echo date("Y-m-d H:i:s",strtotime("last Thursday")) 结果:2009-01-15 00:00:00

    以上示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

     一,获取指定日期的unix时间戳 strtotime("2009-1-22") 示例如下:

      echo strtotime("2009-1-22") 结果:1232553600

      说明:返回2009年1月22日0点0分0秒时间戳

      二,获取英文文本日期时间 示例如下:

      便于比较,使用date将当时间戳与指定时间戳转换成系统时间

      (1)打印明天此时的时间戳strtotime("+1 day")

      当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

      指定时间:echo date("Y-m-d H:i:s",strtotime("+1 day")) 结果:2009-01-23 09:40:25

      (2)打印昨天此时的时间戳strtotime("-1 day")

      当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

      指定时间:echo date("Y-m-d H:i:s",strtotime("-1 day")) 结果:2009-01-21 09:40:25

      (3)打印下个星期此时的时间戳strtotime("+1 week")

      当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

      指定时间:echo date("Y-m-d H:i:s",strtotime("+1 week")) 结果:2009-01-29 09:40:25

      (4)打印上个星期此时的时间戳strtotime("-1 week")

      当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

      指定时间:echo date("Y-m-d H:i:s",strtotime("-1 week")) 结果:2009-01-15 09:40:25

      (5)打印指定下星期几的时间戳strtotime("next Thursday")

      当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

      指定时间:echo date("Y-m-d H:i:s",strtotime("next Thursday")) 结果:2009-01-29 00:00:00

      (6)打印指定上星期几的时间戳strtotime("last Thursday")

      当前时间:echo date("Y-m-d H:i:s",time()) 结果:2009-01-22 09:40:25

    指定时间:echo date("Y-m-d H:i:s",strtotime("last Thursday")) 结果:2009-01-15 00:00:00

     

    1. 时间大小的比较

    使用strtotime可以实现时间的比较

    <?php

        $time1=date("Y-m-s H:i:s");

        $time2="2008-2-3 16:30:02";

        $res=strtotime($time1)-strtotime($time2);

        echo $res;

    ?>

    如果time1早于time2则返回小于0的数,如果晚于则返回大于0的数,否则返回0.

    <?php

        $time1=date("Y-m-s H:i:s");

        $time2="2014-12-3 16:30:02";

        $res=strtotime($time1)-strtotime($time2);

        $days=ceil($res/(24*60*60));//计算两个时间相隔的天数

        $hours=ceil($res/3600);//计算两个时间相隔的小时数

        echo "相隔".$days."<p>";

        echo "相隔".$hours."小时<p>";

    ?>

     

    1. 计算程序运行时间

    string microtime(void)

    返回时间戳和微妙数,中间用空格隔开。

    <?php

        function run_time()

        {

           list($msec,$sec)=explode(" ", microtime());

           return ((float)$msec+(float)$sec);

        }

        $start_time=run_time();

        for($index=1;$index<100;$index++){

           $sum=0;

           for($k=1;$k<1000;$k++){

               $sum=$sum+1;

           }

        }

        $end_time=run_time();

        echo "用时:".($end_time-$start_time)."";

    ?>

     

    13、COOKIE

    1. 创建Cookie

    setcookie(name,value,expire,path,domain,secure)

    参数

    描述

    name

    必需。规定 cookie 的名称。

    value

    必需。规定 cookie 的值。

    expire

    可选。规定 cookie 的有效期。

    path

    可选。规定 cookie 的服务器路径。

    domain

    可选。规定 cookie 的域名。

    secure

    可选。规定是否通过安全的 HTTPS 连接来传输 cookie。

    可以通过 $HTTP_COOKIE_VARS["user"] 或 $_COOKIE["user"] 来访问名为 "user" 的 cookie 的值. cookie 的名称指定为相同名称的变量。例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值。cookie数据保存在文本文件中。

    <?php

        setcookie("TMCookie","www.baidu.com");

        setcookie("TMCookie","www.baidu.com",time()+60);//设置有效时间为60

        $value = "my cookie value";

        setcookie("TMCookie",$value,time()+3600,"/tm/","www.baidu.com",1)

    ?>

    注:如果未设置Cookie的失效时间,则在关闭浏览器时自动删除Cookie数据。

    1. 读取Cookie

    <?php

        if(!isset($_COOKIE["visitTime"])){//检测Cookie文件是否存在

           setcookie("vistTime",date("Y-m-d H:i:s"));

           echo '欢迎第一次访问';

        }

        else{

           setcookie("vistTime",date("Y-m-d H:i:s"),time()+60);

           echo '上次访问时间'.$_COOKIE["vistTime"];

        }

    ?>

     

    <?php

    setcookie("cookie[three]","cookiethree");

    setcookie("cookie[two]","cookietwo");

    setcookie("cookie[one]","cookieone");

     

    // 输出 cookie (在重载页面后)

    if (isset($_COOKIE["cookie"]))

      {

      foreach ($_COOKIE["cookie"] as $name => $value)

        {

        echo "$name : $value <br />";

        }

      }

    ?>

     

    1. 删除Cookie

    将setcookie函数第二个参数设置为空或者把失效时间设置为过去时间就可以删除cookie.

    setcookie ("TestCookie", "", time() - 3600);

     

    14、Session

    Cookie是存储在客户端的硬盘上的,而Session是存储在服务器上的,在PHP脚本中以变量形式创建。

     

    <?php

        session_set_cookie_params(2*60);//设置session失效时间为2分钟

        session_start();//启动Session

        $_SESSION["admin"]="fearless";//声明session变量并赋值

        if(!empty($_SESSION["admin"])){

           echo $_SESSION["admin"];

        }

        unset($_SESSION["admin"]);//注销会话

        if(!empty($_SESSION["admin"])){

           echo $_SESSION["admin"];

        }

        else{

           echo '会话不存在';

        }

    ?>

    如果要删除多个会话可以通过一个空数组赋给$_SESSION来实现。

    $_SESSION=array();

    如果整个会话已结束应该注销所有的会话变量,然后使用session_destroy()函数清楚会话。

    注意:session_set_cookie_params必须在session_start之前调用。

     

    通过setcookie设置session失效时间。

    <?php

        session_start();

        $time=60*60;//失效时间为60分钟

        setcookie(session_name(),session_id(),time()+$time,"/");

        $_SESSION["user"]="wit";

    ?>

     

    设置session存储路径,session_save_path必须在session_start之前调用。

    <?php

        session_save_path("./tmp/");

        session_start();

        $_SESSION[username]=true;

    ?>

     

    设置session缓存将网页中的内容暂时存储到客户端,提高网页访问速度。

    <?php

        session_cache_limiter('private');//客气客户端缓存

        $limit=session_cache_limiter();

        session_cache_expire(30);

        $expire=session_cache_expire();

        session_start();

        echo $limit.'<p>';

        echo $expire;

    ?>

    15、解析JSON

    使用json_decode可以解析JSON格式内容。

    【例1】

    $json_string='{"id":1,"name":"jb51","email":"admin@jb51.net","interest":["wordpress","php"]} ';

    $obj=json_decode($json_string);

    echo $obj->name; //prints foo

    echo $obj->interest[1]; //prints php

     

    16、加密函数

    1. crypt()函数

    string crypt ( string $str [, string $salt ] )

    返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。此函数加密不可逆。

    <?php

     if ( CRYPT_STD_DES  ==  1 ) {

        echo  'Standard DES: '  .  crypt ( 'rasmuslerdorf' 'rl' ) .  "\n" ;

    }

     

    if ( CRYPT_EXT_DES  ==  1 ) {

        echo  'Extended DES: '  .  crypt ( 'rasmuslerdorf' '_J9..rasm' ) .  "\n" ;

    }

     

    if ( CRYPT_MD5  ==  1 ) {

        echo  'MD5:          '  .  crypt ( 'rasmuslerdorf' '$1$rasmusle$' ) .  "\n" ;

    }

     

    if ( CRYPT_BLOWFISH  ==  1 ) {

        echo  'Blowfish:     '  .  crypt ( 'rasmuslerdorf' '$2a$07$usesomesillystringforsalt$' ) .  "\n" ;

    }

     

    if ( CRYPT_SHA256  ==  1 ) {

        echo  'SHA-256:      '  .  crypt ( 'rasmuslerdorf' '$5$rounds=5000$usesomesillystringforsalt$' ) .  "\n" ;

    }

     

    if ( CRYPT_SHA512  ==  1 ) {

        echo  'SHA-512:      '  .  crypt ( 'rasmuslerdorf' '$6$rounds=5000$usesomesillystringforsalt$' ) .  "\n" ;

    }

     ?>

    输出结果:

     

    1. md5()函数

    string md5 ( string $str [, bool $raw_output = false ] )

    以 32 字符十六进制数字形式返回散列值。此函数加密不可逆。

    <?php

    $str  =  'apple' ;

    echo md5($str);

     ?>

    输出结果:

    1f3870be274f6c49b3e31a0c6728957f

    1. sha1()函数

    string sha1 ( string $str [, bool $raw_output = false ] )

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

    <?php

    $str  =  'apple' ;

    echo sha1($str);

     ?>

    输出结果:

    d0be2dc421be4fcd0172e5afceea3970e2f3d940

    展开全文
  • php学习心得(一)

    千次阅读 2017-06-26 00:14:49
    刚开始学习php的时候,觉得每次要打个"$"符号给人的感觉就是很累赘,想比java的可读性来说,php给人的感觉就是原本很简单的东西却弄的很复杂。不过这一切都可以在开发的速度上得以体现,用php做网站觉得很快,而且...
    刚开始学习php的时候,觉得每次要打个"$"符号给人的感觉就是很累赘,想比java的可读性来说,php给人的感觉就是原本很简单的东西却弄的很复杂。不过这一切都可以在开发的速度上得以体现,用php做网站觉得很快,而且很快上手,用好的ide会发现其实,代码也不是特别累赘,在面向对象这一块,用惯了java 或者C#会发现,有些不习惯php的风格,不过php访问数据库的操作很简单,就几个函数就行了,没有java的繁琐,php动态网页设计这门课程的学习不仅需要我们掌握静态网页设计的基础,而且要求我们有一定的语言学习基础,学过C语言的以及对其它高级语言的语法知识有一定的了解,所以对php中的一些与语法有关的知识,理解不是很困难,建议不了解高级语言语法知识的同仁,多学习一些高级语言的语法。同时,要掌握静态网页的设计。因为,我们编写php动态网页离不开静态网页,这是基础。
    展开全文
  • php学习基础知识

    2019-04-11 10:53:55
    1.IP 概念, Cmd->ipconfig MAC地址: ipconfig /all 127.0.0.1 2.域名 Baidu.hk Ping 域名 //对应的IP地址 Ping IP 地址 //测试网站状态 Localhost 3.DNS 将域名解析为IP地址. ...安装了服务器端的软件...
  • PHP学习之环境的搭建

    2018-07-22 23:11:37
    个人最近刚刚参加实习,实习的工作是php开发工程师,实习时感触很深,感觉自己从...一、仅用于PHP学习的环境  首先,想要运行PHP,必须要完成以下两件事:  XAPMM下载地址:https://www.apachefriends.org/zh_c...
  • php学习资源

    2019-02-18 11:08:19
    零基础新手入门到精通PHP教程,PHP核心编程12天,PHP_AJax视频教程,基于PHP面向对象的自定义MVC框架高
  • 我是如何学习PHP

    千次阅读 2018-11-10 22:53:37
    语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。 它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的...
  • PHP学习之路-------1

    2018-07-03 16:44:23
    学习一门语言,首先知道他的后缀名,.php其次是代码格式(需要注意的是php每一个结束之后必须加分号,对我这种写惯js人来说是一种煎熬)&lt;?php // 此处是 PHP 代码 ?&gt;强大的是在可以在html文件写php...
  • PHP学习系列 -- 源码目录结构学习

    千次阅读 2018-03-10 17:22:30
    通过上一篇文章的学习,我们已经对PHP的知识有了一个大概的了解,比如PHP是开源、免费、适合Web开发的服务端脚本语言,适合进行Web网站的开发,PHP是解释型语言,由Zend 引擎进行PHP语言的解析。本篇文章我们就接着...
  • 传智播客黑马程序员作为一个IT学习平台,历经12年的成长,免费分享视频教程长达10万余小时,累计下载量超3000万次,受益人数达千万。2018年我们不忘初心,继续前行...2018新版PHP学习路线图 每阶段市场价值及可解...
  • 最全php学习路线图,从入门到大牛

    千次阅读 2019-07-07 22:36:18
    php学习路线图,从入门到大牛入门中级高级扩展 入门 本阶段是给完全没有接触过技术的小菜鸟的 菜鸟教程 入门的可以在这里学习到,师傅领进门,修行在个人,初级之后都需要自个去相应的官网论坛查资料,看文档。 ...
  • PHP学习必看的一些书

    千次阅读 2016-04-05 16:26:24
    对应初学的PHP,应该买什么样的书?到处问人,到处求助? 该文章列举了一些书籍,感觉还行,特此重新整理了一下。觉得有些言过其实了,或者是没必要去看的。 原文地址:...
  • 此文是我近期学习PHP环境搭建,同时参考其他网站结合自己搭建过程所做的整理,希望可以给你带来帮助。  ——————————————————————————————————————————2015-10-11 ...
  • 【学习必看】PHP学习路线图

    千次阅读 多人点赞 2017-07-06 14:12:14
    摘要: 在网上很多人公布了太多的PHP学习路线图,本人在互联网公司工作十余年,也带了很多PHP入门的新手,将他们的一些问题和学习路线图为大家整理出来,希望很多小白少走弯路。 一、网上某些错误的学习路线图 网上...
  • PHP学习方法分享到:

    千次阅读 2011-06-08 18:55:00
    本人有幸从事php的教学,得已全面学习一下php,经过一段时间的学习,把一些体会和心得提供给大家以便让更多人少走一些弯路,如有不正确的地方,欢迎大家批评指正,谢谢。在学习php之前要有一些前提知识要学习,那...
  • PHP学习路线图

    千次阅读 2018-05-30 18:19:12
    针对爱好学习php的人,熟悉关于自学编程语言的学习路线是非常重要的,它能指引我们更好的去深入php语言相关技术,让我们在IT的世界中站住脚跟
  • PHP学习线路图

    万次阅读 多人点赞 2018-09-19 19:33:57
    PHP学习线路图 PHP教程 PHP教程 PHP简介 PHP环境设置 PHP语法概述 PHP变量类型 PHP常量类型 PHP运算符类型 PHP 条件语句 PHP循环语句 PHP数组 PHP字符串操作 PHP Web概念 PHP的GET...
  • PHP学习笔记6(数组)

    千次阅读 2017-12-16 09:58:09
    PHP有两种数组:索引数组、关联数组(针对数组的键来分类) 索引数组:键是0,1,2,… 关联数组:键是字符串 (2)索引数组 索引数组是指数组的键是整数的数组,并且键的整数顺序是从0开始,依次类推 <?php $fruit =...
  • PHP学习笔记-PHP与JavaScript的交互

    万次阅读 2016-07-03 10:23:52
    转载请标明出处: ...前言前两篇笔记PHP学习笔记-PHP与Web页面的交互1和PHP学习笔记-PHP与Web页面的交互2讲了PHP与Web的交互,JavaScript在Web系统中得到了非常广泛的应用,因此接下来记录的是PHP与JavaS
1 2 3 4 5 ... 20
收藏数 306,661
精华内容 122,664
关键字:

php学习