• PHP基础学习笔记4


    一、日期
      1.1 date()函数
        语法:string date ( string $format [, int $timestamp ] )
        参数:
    参数描述format必需,规定时间戳的格式;timestamp可选,规定时间戳,默认是当前的日期和时间
      
      1.2 format字符 
    format 字符说明返回值例子
    --- ---
    d 月份中的第几天,有前导零的 2 位数字 01 到 31
    D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
    j 月份中的第几天,没有前导零 1 到 31
    l("L"的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
    N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
    S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
    w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
    z 年份中的第几天 0 到 365
    星期 --- ---
    W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
    --- ---
    F 月份,完整的文本格式,例如 January 或者 March January 到 December
    m 数字表示的月份,有前导零 01 到 12
    M 三个字母缩写表示的月份 Jan 到 Dec
    n 数字表示的月份,没有前导零 1 到 12
    t 给定月份所应有的天数 28 到 31
    --- ---
    L 是否为闰年 如果是闰年为 1,否则为 0
    o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
    Y 4 位数字完整表示的年份 例如:1999 或 2003
    y 2 位数字表示的年份 例如:99 或 03
    时间 --- ---
    a 小写的上午和下午值 am 或 pm
    A 大写的上午和下午值 AM 或 PM
    B Swatch Internet 标准时 000 到 999
    g 小时,12 小时格式,没有前导零 1 到 12
    G 小时,24 小时格式,没有前导零 0 到 23
    h 小时,12 小时格式,有前导零 01 到 12
    H 小时,24 小时格式,有前导零 00 到 23
    i 有前导零的分钟数 00 到 59>
    s 秒数,有前导零 00 到 59>
    u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 示例: 654321
    时区 --- ---
    e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
    I 是否为夏令时 如果是夏令时为 1,否则为 0
    O 与格林威治时间相差的小时数 例如:+0200
    P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
    T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。
    Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200
    完整的日期/时间 --- ---
    c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
    r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
    U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time()

    二、包含文件

      include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码;
      
    include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
        require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行;
        include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行
      <html>
      <head>
        <meta charset="utf-8">
        <title>菜鸟教程(runoob.com)</title>
      </head>
      <body>
        <?php include 'header.php'; ?>
        <h1>欢迎来到我的主页!</h1>
        <p>一些文本</p>
      </body>
      </html>
    三、文件操作

      3.1 打开文件
        <html>
        <body>
          <?php
            $file=fopen("welcome.txt","r") or exit("Unable to open file!");
          ?>
        </body>
        </html>
      3.2 文件打开模式
    模式描述
    r 只读。在文件的开头开始。
    r+ 读/写。在文件的开头开始。
    w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
    w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
    a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
    a+ 读/追加。通过向文件末尾写内容,来保持文件内容。
    x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
    x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
      3.3 关闭文件
        <?php
          $file = fopen("test.txt","r");

          //执行一些代码

          fclose($file);
        ?>
      3.4 检测文件末尾
        if (feof($file)) echo "文件结尾";
      3.5 逐行读取文件
        <?php
          $file = fopen("welcome.txt", "r") or exit("无法打开文件!");
          // 读取文件每一行,直到文件结尾
          while(!feof($file))
          {
              echo fgets($file). "<br>";
          }
          fclose($file);
        ?>
      3.6 逐字符读取文件
        <?php
          $file=fopen("welcome.txt","r") or exit("无法打开文件!");
          while (!feof($file))
          {
              echo fgetc($file);
          }
          fclose($file);
        ?>

    四、文件上传
      4.1 上传表单   
        <html>
        
        <head>
          <meta charset="utf-8">
          <title>菜鸟教程(runoob.com)</title>
        </head>
        <body>
          <form action="upload_file.php" method="post" enctype="multipart/form-data">
              <label for="file">文件名:</label>
              <input type="file" name="file" id="file"><br>
              <input type="submit" name="submit" value="提交">
          </form>
        </body>
        </html>
      4.2 上传脚本
        通过使用 PHP 的全局数组 $_FILES,可以从客户计算机向远程服务器上传文件  
        <?php
          if ($_FILES["file"]["error"] > 0)
          {
              echo "错误:" . $_FILES["file"]["error"] . "<br>";
          }
          else
          {
              echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
              echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
              echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
              echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
          }
        ?>
        $_FILES参数说明:

          $_FILES["file"]["name"] - 上传文件的名称

          $_FILES["file"]["type"] - 上传文件的类型

          $_FILES["file"]["size"] - 上传文件的大小,以字节计  

          $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称

          $_FILES["file"]["error"] - 由文件上传导致的错误代码

      4.3 对上传的文件做限制        

          <?php

          // 允许上传的图片后缀
          $allowedExts = array("gif", "jpeg", "jpg", "png");
          $temp = explode(".", $_FILES["file"]["name"]);
          $extension = end($temp);        // 获取文件后缀名
          if ((($_FILES["file"]["type"] == "image/gif")
          || ($_FILES["file"]["type"] == "image/jpeg")
          || ($_FILES["file"]["type"] == "image/jpg")
          || ($_FILES["file"]["type"] == "image/pjpeg")
          || ($_FILES["file"]["type"] == "image/x-png")
          || ($_FILES["file"]["type"] == "image/png"))
          && ($_FILES["file"]["size"] < 204800)    // 小于 200 kb
          && in_array($extension, $allowedExts))
          {
              if ($_FILES["file"]["error"] > 0)
              {
                  echo "错误:: " . $_FILES["file"]["error"] . "<br>";
              }
              else
              {
                  echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
                  echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
                  echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
                  echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
              }
          }
          else
          {
              echo "非法的文件格式";
          }
        ?>
      
      4.4 保存被上传的文件
        
        <?php  

        // 允许上传的图片后缀      $allowedExts = array("gif", "jpeg", "jpg", "png");
          $temp = explode(".", $_FILES["file"]["name"]);
          echo $_FILES["file"]["size"];
          $extension = end($temp);     // 获取文件后缀名
          if ((($_FILES["file"]["type"] == "image/gif")
          || ($_FILES["file"]["type"] == "image/jpeg")
          || ($_FILES["file"]["type"] == "image/jpg")
          || ($_FILES["file"]["type"] == "image/pjpeg")
          || ($_FILES["file"]["type"] == "image/x-png")
          || ($_FILES["file"]["type"] == "image/png"))
          && ($_FILES["file"]["size"] < 204800)   // 小于 200 kb
          && in_array($extension, $allowedExts))
          {
              if ($_FILES["file"]["error"] > 0)
              {
                  echo "错误:: " . $_FILES["file"]["error"] . "<br>";
              }
              else
              {
                  echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
                  echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
                  echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
                  echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
            
                  // 判断当期目录下的 upload 目录是否存在该文件
                  // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
                  if (file_exists("upload/" . $_FILES["file"]["name"]))
                  {
                      echo $_FILES["file"]["name"] . " 文件已经存在。 ";
                  }
                  else
                  {
                      // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
                      move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
                      echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
                  }
              }
          }
          else
          {
              echo "非法的文件格式";
          }
        ?>

    五、Cookie
      5.1 创建cookie
      
    setcookie() 函数用于设置 cookie; setcookie() 函数必须位于 <html> 标签之前
      语法:setcookie(name, value, expire, path, domain);
      创建名为user的cookie并设置过期时间
      (1) <?php
          setcookie("user", "runoob", time()+3600);
          ?>
    
          <html>
          .....
      (2) <?php
          $expire=time()+60*60*24*30;
          setcookie("user", "runoob", $expire);
         ?>
    
         <html>
            .....
      5.2 取回cookie
        
    <?php
          // 输出 cookie 值
          echo $_COOKIE["user"];
          // 查看所有 cookie
          print_r($_COOKIE);
        ?>

      5.3 确认是否已经设置了cookie  
        <?php
          if (isset($_COOKIE["user"]))
              echo "欢迎 " . $_COOKIE["user"] . "!<br>";
          else
              echo "普通访客!<br>";
        ?>
      5.4 删除cookie
        
    <?php
          // 设置 cookie 过期时间为过去 1 小时
          setcookie("user", "", time()-3600);
        ?>
    六、Session 

    七、E-mail
      
      7.1 使用mail()函数发送邮件
        语法:mail(to,subject,message,headers,parameters)
    参数描述
    to 必需。规定 email 接收者。
    subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
    message 必需。定义要发送的消息。应使用 LF ( ) 来分隔各行。每行应该限制在 70 个字符内。
    headers 可选。规定附加的标题,比如 From、Cc 和 Bcc。应当使用 CRLF ( ) 分隔附加的标题。
    parameters 可选。对邮件发送程序规定额外的参数。
        注意:PHP 运行邮件函数需要一个已安装且正在运行的邮件系统(如:sendmail、postfix、qmail等);所用的程序通过在 php.ini 文件中的配置设置进行定义.
    八、错误处理
      
      8.1
    使用 die() 函数  

       <?php
         if(!file_exists("welcome.txt"))
         {
           die("文件不存在");
         }
         else
         {
           $file=fopen("welcome.txt","r");
         }
       ?>
       

       8.2 创建自定义错误处理函数

       语法:error_function(error_level,error_message,error_file,error_line,error_context)

       参数

    参数描述
    error_level 必需。为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。
    error_message 必需。为用户定义的错误规定错误消息。
    error_file 可选。规定错误发生的文件名。
    error_line 可选。规定错误发生的行号。
    error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值

       错误报告级别:

    常量描述
    2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。
    8 E_NOTICE run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。
    256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
    512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
    1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
    4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
    8191 E_ALL 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

       创建一个错误处理函数: 

        function customError($errno, $errstr)
        {
          echo "<b>Error:</b> [$errno] $errstr<br>";
          echo "脚本结束";
          die();
        }
       

       把自定义的错误处理函数设置为默认错误处理函数:

        set_error_handler("customError");

        可以添加第二个参数;通过添加的第二个参数(错误报告级别),可以规定所触发的错误类型

     九、异常处理

      9.1 Try、throw 和 catch 

      <?php
        // 创建一个有异常处理的函数
        function checkNum($number)  

        {
          if($number>1)
          {
            throw new Exception("变量值必须小于等于 1");
          }
          return true;
        }

        // 在 try 块 触发异常
        try
        {
          checkNum(2);
          // 如果抛出异常,以下文本不会输出
          echo '如果输出该内容,说明 $number 变量';
        }
        // 捕获异常
        catch(Exception $e)
        {
          echo 'Message: ' .$e->getMessage();
        }
      ?>
      

      9.2 自定义Exception类 

      <?php
        class customException extends Exception
        {
          public function errorMessage()
          {
            // 错误信息
            $errorMsg = '错误行号 '.$this->getLine().' in '.$this->getFile()
              .': <b>'.$this->getMessage().'</b> 不是一个合法的 E-Mail 地址';
            return $errorMsg;  
          }
        }

        $email = "someone@example...com";

        try
        {
          // 检测邮箱
          if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
          {
            // 如果是个不合法的邮箱地址,抛出异常
            throw new customException($email);
          }
        }

        catch (customException $e)
        {
          //display custom message
          echo $e->errorMessage();
        }
      ?>

      9.3 捕获多个异常  

      <?php
        class customException extends Exception
        {
          public function errorMessage()
          {
            // 错误信息
            $errorMsg = '错误行号 '.$this->getLine().' in '.$this->getFile()
              .': <b>'.$this->getMessage().'</b> 不是一个合法的 E-Mail 地址';
            return $errorMsg;
          }
        }

        $email = "someone@example.com";

        try
        {
          // 检测邮箱
          if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
          {
            // 如果是个不合法的邮箱地址,抛出异常
            throw new customException($email);
          }
          // 检测 "example" 是否在邮箱地址中
          if(strpos($email, "example") !== FALSE)
          {
            throw new Exception("$email 是 example 邮箱");
          }
        }
        catch (customException $e)
        {
          echo $e->errorMessage();
        }
        catch(Exception $e)
        {
          echo $e->getMessage();
        }
      ?>

      9.4 重复抛出异常 

      <?php
        class customException extends Exception
        {
          public function errorMessage()
          {
            // 错误信息
            $errorMsg = $this->getMessage().' 不是一个合法的 E-Mail 地址。';
            return $errorMsg;
          }
        }

        $email = "someone@example.com";

        try
        {
          try
          {
            // 检测 "example" 是否在邮箱地址中
            if(strpos($email, "example") !== FALSE)
            {
              // 如果是个不合法的邮箱地址,抛出异常
              throw new Exception($email);
            }
          }
          catch(Exception $e)
          {
            // 重新抛出异常
            throw new customException($email);
          }
        }
        catch (customException $e)
        {
          // 显示自定义信息
          echo $e->errorMessage();
        }
      ?>

     9.5 设置顶层异常处理器

      <?php
        function myException($exception)
        {
          echo "<b>Exception:</b> " , $exception->getMessage();
        }

        set_exception_handler('myException');

        throw new Exception('Uncaught Exception occurred');
      ?>

      

     十、过滤器  

    10.1 过滤函数
    函数描述PHP
    filter_has_var() 检查是否存在指定输入类型的变量。 5
    filter_id() 返回指定过滤器的 ID 号。 5
    filter_input() 从脚本外部获取输入,并进行过滤。 5
    filter_input_array() 从脚本外部获取多项输入,并进行过滤。 5
    filter_list() 返回包含所有得到支持的过滤器的一个数组。 5
    filter_var_array() 获取多个变量,并进行过滤。 5
    filter_var() 获取一个变量,并进行过滤。 5

    10.2 过滤器
      
    ID 名称描述
    FILTER_CALLBACK 调用用户自定义函数来过滤数据。
    FILTER_SANITIZE_STRING 去除标签,去除或编码特殊字符。
    FILTER_SANITIZE_STRIPPED "string" 过滤器的别名。
    FILTER_SANITIZE_ENCODED URL-encode 字符串,去除或编码特殊字符。
    FILTER_SANITIZE_SPECIAL_CHARS HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。
    FILTER_SANITIZE_EMAIL 删除所有字符,除了字母、数字以及 !#$%&'*+-/=?^_`{|}~@.[]
    FILTER_SANITIZE_URL 删除所有字符,除了字母、数字以及 $-_.+!*'(),{}|^~[]`<>#%";/?:@&=
    FILTER_SANITIZE_NUMBER_INT 删除所有字符,除了数字和 +-
    FILTER_SANITIZE_NUMBER_FLOAT 删除所有字符,除了数字、+- 以及 .,eE
    FILTER_SANITIZE_MAGIC_QUOTES 应用 addslashes()。
    FILTER_UNSAFE_RAW 不进行任何过滤,去除或编码特殊字符。
    FILTER_VALIDATE_INT 把值作为整数来验证。
    FILTER_VALIDATE_BOOLEAN 把值作为布尔选项来验证。如果是 "1"、"true"、"on" 和 "yes",则返回 TRUE。如果是 "0"、"false"、"off"、"no" 和 "",则返回 FALSE。否则返回 NULL。
    FILTER_VALIDATE_FLOAT 把值作为浮点数来验证。
    FILTER_VALIDATE_REGEXP 根据 regexp(一种兼容 Perl 的正则表达式)来验证值。
    FILTER_VALIDATE_URL 把值作为 URL 来验证。
    FILTER_VALIDATE_EMAIL 把值作为 e-mail 地址来验证。
    FILTER_VALIDATE_IP 把值作为 IP 地址来验证,只限 IPv4 或 IPv6 或 不是来自私有或者保留的范围。

    十一、JSON(在 php5.2.0 及以上版本已经内置 JSON 扩展)
     11.1 json函数
    函数描述
    json_encode 对变量进行 JSON 编码
    json_decode 对 JSON 格式的字符串进行解码,转换为 PHP 变量
    json_last_error 返回最后发生的错误
     11.2 json_encode()函数
      
      语法:
    string json_encode ( $value [, $options = 0 ] )
      
    返回值:用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE
      参数:
        
    value: 要编码的值。该函数只对 UTF-8 编码的数据有效
        options:由以下常量组成的二进制掩码:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS,
             JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT

    11.3 json_decode()函数
      
      语法:mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
      参数:
        json_string: 待解码的 JSON 字符串,必须是 UTF-8 编码数
        assoc: 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象
        depth: 整数类型的参数,它指定递归深度
        options: 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING
      
     
     
     

      
     

     
  • 相关阅读:
    Unable to lock the administration directory (/var/lib/dpkg/)解决办法
    Linux实训——搭建动态网站
    Linux实训——搭建HTTP服务器
    小程序学习视频教程
    数组的所有方法
    小程序组件封装步骤
    微信小程序生成图片学习
    小程序组件封装学习地址
    开发者在 onPageNotFound 回调中进行重定向处理onPageNotFound(Object)
    小程序中view的自定义属性获取
  • 原文地址:https://www.cnblogs.com/soldierback/p/11691296.html
Copyright © 2020-2023  润新知