• PHP 基础


    1.POST GET区别

    POST 和GET是什么?HTTP协议中的两种发送请求的方法 HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

    HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接

    GET - 从指定的资源请求数据。 ---查询字符串(名称/值对)是在 GET 请求的 URL 中发送的

    POST - 向指定的资源提交要被处理的数据 ---查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的

    长的说:

    对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

    而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

     也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

     因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

    1. GET与POST都有自己的语义,不能随便混用。

    2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

    3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

    https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd

    GET的语义是请求获取指定的资源。GET方法是安全、幂等、可缓存的(除非有 Cache-Control Header的约束),GET方法的报文主体没有任何语义。

    POST的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST不安全,不幂等,(大部分实现)不可缓存。

    2。HTML BASE含义

    <base> 标签为页面上的所有链接规定默认地址或默认目标。base其实就是定义一个默认的地址和默认目标。在其后的链接元素都将起作用。



    3.魔术方法

    __construct() 类的构造函数
    __desctruct() 类的析构函数
    __get() 获得一个类的成员变量时调用
    __set() 设置一个类的成员变量时调用
    __isset() 当对不可访问属性调用isset()或empty()时调用
    __unset() 当对不可访问属性调用unset()时被调用。
    __toString() 类被当成字符串时的回应方法
    __clone() 当对象复制完成时调用
    __sleep() 执行serialize()时,先会调用这个函数
    __call() 在对象中调用一个不可访问方法时调用
    __invoke() 调用函数的方式调用一个对象时的回应方法
    __autoload() 尝试加载未定义的类

    4。PHP正则表达式 验证电子邮件地址

    $email_address = $_POST["email_address"];
    $pattern = "/^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/i";
    if ( preg_match( $pattern, $email_address ) )

    解释:

    1.这头尾两个斜杠/是正则表达式的限定符,这是Perl正则的标准,而php支持的正则表达式就是Perl正则的规范。表示两个斜杠之间就是正则内容,在结尾斜杠后面可以开启匹配的模式

    2.后面的 i 就是忽略大小写匹配

    3.^表示行开始 $表示行结尾

    5.strrev — 反转字符串

    函数实现
        
        function getRev($str,$encoding='utf-8'){
            $result = '';
            $len = mb_strlen($str);
            for($i=$len-1; $i>=0; $i--){
                $result .= mb_substr($str,$i,1,$encoding);
            }
            return $result;
        }
        $string = 'OK你是正确的Ole';
        echo getRev($string);

     6。

    $path_parts pathinfo($path);      //pathinfo — 返回文件路径的信息
     
    echo '分割出来的扩展名:'.$path_parts['extension'].'<br><br>';
    其他

    $file = ‘需要进行获取扩展名的文件.php’;

    //第一种,根据.拆分,获取最后一个元素的值
    function getExt1{
    return end(explode(".",$file);)
    }
    //第二种,获取最后一个点的位置,截取
    function getExt2{
    return substr($file,strrpos($file,'.')+1);
    }
    //第三种,根据.拆分,获取最后一个元素的值
    function getExt3($file) {
    return array_pop(explode(‘.’,$file)); 
    }

    //第四种,pathinfo 
    function getExt5($file) {
    $arr = pathinfo($file);
    return $arr['extension'];
    //或者这样return pathinfo($file,PATHINFO_EXTENSION);
    }

    //第五种,正则,子模式
    function getExt6$file){
    preg_match("/(gif | jpg | png)$/",$file,$match);
    $match=$match[0];

    //第六种,正则反向引用
    function getExt7($file){
    $match=preg_replace("/.*.(w+)/" , "\1" ,$file );
    echo $match;
    }

    echo print print_r 区别

    共同点:首先echo 和 print 都不是严格意义上的函数,他们都是 语言结构;他们都只能输出 字符串,整型跟int型浮点型数据。不能打印复合型和资源型数据;

    而区别是:echo 可以连续输出多个变量,而print只能一次输出一个变量。print打印的值能直接复制给一个变量,如 $a = print “123”;

    而echo 不可以,它没有像函数的行为,所以不能用于函数的上下文。在使用时,echo() 函数比 print()速度稍快。

    print_r() 只能打印一些易于理解的信息,且print_r()在打印数组时,会将把数组的指针移到最后边,使用 reset() 可让指针回到开始处。 

  • 相关阅读:
    客户端命令行查看dubbo服务的生产者和消费者
    灰度发布
    灰度发布方法了解
    spring事务隔离级别
    小东西
    从excel表中生成批量SQL,将数据录入到数据库中
    CSV导出
    详解Java的自动装箱与拆箱(Autoboxing and unboxing)
    java多线程理解
    spring事务传播行为讲解转载
  • 原文地址:https://www.cnblogs.com/kaixin110/p/9081232.html
Copyright © 2020-2023  润新知