为了账号安全,请及时绑定邮箱和手机立即绑定

PHP进阶篇

Jason PHP开发工程师
难度初级
时长 9小时28分
学习人数
综合评分8.90
570人评价 查看评价
9.3 内容实用
8.8 简洁易懂
8.6 逻辑清晰
  • PHP使用unlink函数进行文件删除。

    unlink($filename);

    删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。

    rmdir($dir);

    如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。

    foreach (glob("*") as $filename) {
      unlink($filename);
    }


    查看全部
  • PHP写文件也具有两种方式,最简单的方式是采用file_put_contents。

    $filename = './test.txt';
    $data = 'test';//文件内容
    file_put_contents($filename, $data);


    查看全部
  • filesize函数可以取得文件的大小,文件大小是以字节数表示的。

    $filename = '/data/webroot/usercode/resource/test.txt';
    $size = filesize($filename);

    如果要转换文件大小的单位,可以自己定义函数来实现。

    function getsize($size, $format = 'kb') {
       $p = 0;
       if ($format == 'kb') {
           $p = 1;
       } elseif ($format == 'mb') {
           $p = 2;
       } elseif ($format == 'gb') {
           $p = 3;
       }
       $size /= pow(1024, $p);
       return number_format($size, 3);
    }$filename = '/data/webroot/usercode/code/resource/test.txt';$size = filesize($filename);$size = getsize($size, 'kb'); //进行单位转换echo $size.'kb';


    查看全部
  • 文件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。

    fileowner:获得文件的所有者filectime:获取文件的创建时间filemtime:获取文件的修改时间fileatime:获取文件的访问时间

    其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。

    $mtime = filemtime($filename);
    echo '修改时间:'.filemtime($filename);


    查看全部
  • $filename = './test.txt';
    if (file_exists($filename)) {
       echo file_get_contents($filename);
    }

    如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,从函数名可以看出,is_file是确切的判断给定的路径是否是一个文件。

    $filename = './test.txt';
    if (is_file($filename)) {
       echo file_get_contents($filename);
    }

    使用is_readable与is_writeable在文件是否存在的基础上,判断文件是否可读与可写。

    $filename = './test.txt';
    if (is_writeable($filename)) {
       file_put_contents($filename, 'test');
    }
    if (is_readable($filename)) {
       echo file_get_contents($filename);
    }


    查看全部
  • 读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中。

    $content = file_get_contents('./test.txt');

    file_get_contents也可以通过参数控制读取内容的开始点以及长度。

    $content = file_get_contents('./test.txt', null, null, 100, 500);

    PHP也提供类似于C语言操作文件的方法,使用fopen,fgets,fread等方法,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。

    $fp = fopen('./text.txt', 'rb');
    while(!feof($fp)) {
       echo fgets($fp); //读取一行
    }
    fclose($fp);

     

    $fp = fopen('./text.txt', 'rb');
    $contents = '';
    while(!feof($fp)) {
       $contents .= fread($fp, 4096); //一次读取4096个字符
    }
    fclose($fp);

    使用fopen打开的文件,最好使用fclose关闭文件指针,以避免文件句柄被占用。


    编写代码读取$filename的文件内容。

    $content = file_get_contents($filename);
    echo $content;


    查看全部
  • PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。

    session_start();
    $_SESSION['name'] = 'jobs';
    unset($_SESSION['name']);
    echo $_SESSION['name']; //提示name不存在

    如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在。

    session_start();
    $_SESSION['name'] = 'jobs';
    $_SESSION['time'] = time();
    session_destroy();


    查看全部
  • session_start();
    $_SESSION['test'] = time();
    var_dump($_SESSION);

    session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等。

    session_start();
    $_SESSION['ary'] = array('name' => 'jobs');
    $_SESSION['obj'] = new stdClass();
    var_dump($_SESSION);


    设置一个session,使name的值为jobs:

    session_start();

    $_SESSION['name'] = 'jobs';


    查看全部
    0 采集 收起 来源:使用session

    2021-02-12

  • <?php

    //开始使用session

    session_start();

    //设置一个session

    $_SESSION['test'] = time();

    //显示当前的session_id

    echo "session_id:".session_id();

    echo "<br>";


    //读取session值

    echo $_SESSION['test'];


    //销毁一个session

    unset($_SESSION['test']);

    echo "<br>";

    var_dump($_SESSION);


    查看全部
  • 设置了有效路径的时候,不在当前路径的时候则看不到当前cookie。

    setcookie('test', '1',0, '/path');  
    var_dump($_COOKIE['test']);  


    查看全部
  • PHP中删除cookie也是采用setcookie函数来实现。

    setcookie('test', '', time()-1);


    查看全部
  • setcookie具有7个可选参数,我们常用到的为前5个:

    name( Cookie名)可以通过$_COOKIE['name'] 进行访问
    value(Cookie的值)
    expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效
    path(有效路径)如果路径设置为'/',则整个网站都有效
    domain(有效域)默认整个域名都有效,如果设置了'www.imooc.com',则只在www子域中有效

    $value = 'test';
    setcookie("TestCookie", $value);//名字是'TestCookie',值为value
    setcookie("TestCookie", $value, time()+3600);  //有效期一小时
    setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域

    PHP中还有一个设置Cookie的函数setrawcookie,setrawcookie跟setcookie基本一样,唯一的不同就是value值不会自动的进行urlencode,因此在需要的时候要手动的进行urlencode。

    setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);

    因为Cookie是通过HTTP标头进行设置的,所以也可以直接使用header方法进行设置。

    header("Set-Cookie:cookie_name=value");


    查看全部
    0 采集 收起 来源:设置cookie

    2021-02-11

  • 正则匹配常用在表单验证上

    <?php

    $user = array(

        'name' => 'spark1985',

        'email' => 'spark@imooc.com',

        'mobile' => '13312345678'

    );

    //进行一般性验证

    if (empty($user)) {

        die('用户信息不能为空');

    }

    if (strlen($user['name']) < 6) {

        die('用户名长度最少为6位');

    }

    //用户名必须为字母、数字与下划线

    if (!preg_match('/^\w+$/i', $user['name'])) {

        die('用户名不合法');

    }

    //验证邮箱格式是否正确

    if (!preg_match('/^[\w\.]+@\w+\.\w+$/i', $user['email'])) {

        die('邮箱不合法');

    }

    //手机号必须为11位数字,且为1开头

    if (!preg_match('/^1\d{10}$/i', $user['mobile'])) {

        die('手机号不合法');

    }

    echo '用户信息验证成功';


    查看全部
  • 调整字符串的日期格式:

    $string = 'April 15, 2014';
    $pattern = '/(\w+) (\d+), (\d+)/i';
    $replacement = '$3, ${1} $2';
    echo preg_replace($pattern, $replacement, $string); //结果为:2014, April 15

    其中${1}与$1的写法是等效的,表示第一个匹配的字串,$2代表第二个匹配的。


    将目标字符串$str中的文件名替换后增加em标签,例如index.php要替换成<em>index.php</em>。

    $str = '主要有以下几个文件:index.php, style.css, common.js';
    $p = '/\w+\.\w+/i';
    $str = preg_replace($p, '<em>$0</em>', $str);
    echo $str;//$0匹配所有字串


    查看全部
  • preg_match只能匹配一次结果,但很多时候我们需要匹配所有的结果,preg_match_all可以循环获取一个列表的匹配结果数组。

    $p = "|<[^>]+>(.*?)</[^>]+>|i";
    $str = "<b>example: </b><div align=left>this is a test</div>";
    preg_match_all($p, $str, $matches);
    print_r($matches);

    可以使用preg_match_all匹配一个表格中的数据:

    $p = "/<tr><td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<\/tr>/i";
    $str = "<table> <tr><td>Eric</td><td>25</td></tr> <tr><td>John</td><td>26</td></tr> </table>";
    preg_match_all($p, $str, $matches);
    print_r($matches);


    使用preg_match_all匹配所有li标签中的数据。

    $p = "/<li>(.*)<\/li>/i";
    preg_match_all($p, $str, $matches);
    print_r($matches[1]);

    //解释下这个正则://后面的i表示不区分大小写,<li>(.*?)<\/li>表示li标签内的匹配的()内的值有多少,括号内的.表示所有单字符,*表示数量为0个或者多个。也就是li标签内有字符就显示出来


    查看全部

举报

0/150
提交
取消
课程须知
需要有一定的网页基础知识如HTML、CSS样式等,并且已经学习完成《PHP入门篇》对PHP已经有了简单的了解,如变量、常量、数据类型等。
老师告诉你能学到什么?
全面的掌握PHP的理论知识与实践中的应用方法,提高编程能力与掌握网页开发技能。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!