PHP 基礎

1.POST GET區別php

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() 可以讓指針回到開始處。 

相關文章
相關標籤/搜索