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