# php --- [TOC] --- ## \[1] 什麼是 php? php 是網頁後端的東西。 在寫 HTML 的時候,如果想跟使用者互動,像是寫登入、登出的網頁,可以利用 php 在網頁間互相傳值。 如果之後要將網頁連結資料庫的話也可以使用 php。 在寫 php 時,需要在結尾加「;」,像在寫 C++ 一樣。 ### 在程式中使用 php 的方式 1. ``<?php php程式碼 ?>`` ![](https://i.imgur.com/Eh1yQUm.png) 2. ``<script language='php'>php程式碼</script>`` (目前新版本的 php 不支援) --- ## \[2] 基本語法 ### 註解 // 單行註解 /* */ 註解 ### 變數 使用變數時不需要宣告 int、float、bool…… 直接: ``` $變數名稱=內容; ``` #### php 變數常用的資料型態 | 資料型態 | 例子 | | -------- | ------------------ | | int | $var = 10 ; | | float | $var = 1.5 ; | | string | $var = 'rilakkuma' ; | | array | $var[0] = 12 ; | | bool | $var = True ; | ### 運算子 跟 C++ 差不多。 有 +、-、*、/、%、++、--、=、+=、==、!=、>、<、&&、||…… --- ## \[3] 字串 ### 字串連接 ``` 字串.字串; ``` ![](https://i.imgur.com/P0fsgc1.png) ### 印出字串 #### echo ``` echo 字串; ``` ![](https://i.imgur.com/upIS10o.png) 使用 echo 不會有回傳值,因此比較快。 #### print( ) ``` print(字串); ``` ![](https://i.imgur.com/zPFhRv0.png) ![](https://i.imgur.com/dCC5qs8.png) 使用 print( ) 會有回傳值,因此比 echo 慢一點。 --- ## \[4] 陣列 php 的陣列在使用上跟 C++ 很像,但在建立 php 的陣列時不需要給陣列長度。 ### 用 php 建陣列的方式 1. ``` $var = array('501','lala','bear') ; ``` 2. ``` $var[0] = '501' ; $var[1] = 'lala' ; $var[2] = 'bear' ; ``` ### count( ) 計算元素個數。 ![](https://i.imgur.com/KM6HLY4.png) ### array_sum( ) 將陣列的元素加總。 ![](https://i.imgur.com/UlPxM4K.png) ### sort( ) 將陣列的元素進行排序。 ![](https://i.imgur.com/12eCvgL.png) 除此之外還有很多,這裡只是把比較常用的列出來。 --- ## \[5] 判斷式與迴圈 ### if、else 判斷式 ![](https://i.imgur.com/qOm1iA3.png) ### while 迴圈 ![](https://i.imgur.com/JRWt37l.png) ### for 迴圈 ![](https://i.imgur.com/OuugnG8.png) --- ## \[6] 函式 ### function ![](https://i.imgur.com/9Ll2aUL.png) ### 常用函式 #### empty( ) 檢查變數是否為零或尚未指定。 例 1. ![](https://i.imgur.com/Fuj7Dkg.png) 例 2. ![](https://i.imgur.com/42GHymb.png) 例 3. ![](https://i.imgur.com/0hqckOR.png) #### unset( ) 清除變數,讓變數尚未指定數值。 ![](https://i.imgur.com/gjYHAtC.png) #### 檢查變數型態 | 函數 | 意思 | | ----------- | ---------------------------- | | is_bool( ) | 檢查變數是否為布林值 | | is_int( ) | 檢查變數是否為整數 | | is_float( ) | 檢查變數是否為浮點數 | | is_string( ) | 檢查變數是否為字串 | | is_numeric( ) | 檢查變數是否為數字或數字字串 | | is_array( ) | 檢查變數是否為陣列 | #### 變數型態轉換(好用!) | 函數 | 意思 | | -------- | -------- | | intval( ) | 將 string 轉成 int | | strval( ) | 將 int 轉成 string | ![](https://i.imgur.com/OYHPbhk.png) #### 字串相關函數(好用!) | 函數 | 意思 | | -------- | -------- | | strlen( ) |取得字串長度| |trim( )|清除字串前後空白字元| |strpos(字串, 搜尋的字串或字元)|取得搜尋的字串或字元在字串裡的位置,可帶入第三個參數設定開始搜尋的位置| |strchr(字串, 搜尋的字串或字元)|從**字串開頭**搜尋字串並印出搜尋字串或字元之後的字串(包含搜尋的字串或字元)| |strrchr(字串, 搜尋的字串或字元)|從**字串結尾**搜尋字串並印出搜尋字串或字元之後的字串(包含搜尋的字串或字元)| |substr(字串, 字元開始位置)|取得部分字串內容,可代入第三參數設定取得字串長度| |explode(字串1, 字串2)|根據字串 1 將字串 2 分割成陣列,可代入第三參數設定分割陣列元素| |implode(字串, 陣列)|根據字串將陣列串接| ![](https://i.imgur.com/90izFTo.png) ![](https://i.imgur.com/BeVjKTn.png) --- ## \[7] php 與 HTML 如果想製作可互動的網頁,像是登入頁面、購物網站等等需要多個頁面可以相傳遞資料的話,php 會是一個很好的選擇。 在 .php 檔中,可以直接寫入: ``` <html>HTML語法</html> ``` ### php 與 HTML 互相嵌入 1. php 中使用 HTML 最簡單的方式就是把 HTML 包成字串,再利用 echo 印出來。 ![](https://i.imgur.com/ZtZDyAN.png) 2. HTML 中使用 php 同上,最簡單的方式也是把 php 包成字串,再利用 echo 印出來,只是要記得一定要把 ``<?php ?>`` 也跟著一起包起來。 ![](https://i.imgur.com/h0MJWnL.png) ### HTML 透過 php 傳值 個人覺得 php 最好用的地方就在這裡,利用 HTML 語法中的 form 表單,就可以簡單方便地把資料傳送出去。 ![](https://i.imgur.com/b3As4gU.png) #### 傳送資料的方式: 1. get 在傳送資料時,使用網址傳送資料,傳送的資料量有限,一共只能傳輸 255 個字元(包含網址的字元)。 接收資料時用: ``` $_GET['資料名稱']; ``` ![](https://i.imgur.com/ebeKlso.png) ![](https://i.imgur.com/wNxQNK1.png) ![](https://i.imgur.com/hhPG4Bn.png) ![](https://i.imgur.com/U1WNvHm.png) 2. post 利用通訊協定的標頭傳送資料,資料不會顯示在網址上,也可以傳大量的資料(個人覺得比較好用)。 接收資料時用: ``` $_POST['資料名稱']; ``` ![](https://i.imgur.com/730OfS5.png) ![](https://i.imgur.com/dTW3pzK.png) ![](https://i.imgur.com/P3e87dC.png) ![](https://i.imgur.com/NtwxeTM.png) #### 比對資料格式 -preg_match( ) 在設定帳號、密碼或是填寫 e-mail 的時候,會要求用特定的資料格式,如果不符會出現警告要求修改,這個可以用 php 寫出來。 1. 若資料符合格式,回傳 1,反之回傳 0。 ``` preg_match(格式, 字串) ``` 2. 將符合格式的資料存入陣列中。 ``` preg_match(格式, 字串, 儲存陣列) ``` 格式的寫法: ``` 格式 = '/寫法/' ``` | 寫法|意思| | -------- | -------- | | [ ] |在列舉的範圍內,填入想要比對的資料格式| |[^ ]|不在列舉的範圍內,填入想要比對的資料格式| |\w|字詞字元,即 [a-zA-Z0-9_]| |\W|非字詞字元,即 [^a-zA-Z0-9_]| |\d|數字,即 [0-9]| 在寫格式時,也可以直接寫 /[a-z]/,依需求填入 [ ] 內就可以了,在比對時只要都是在 [ ] 內有出現的字元就算符合,跟順序無關。 如果要將比對後的資料存數陣列中,則要寫成: ``` /(格式1+)(格式2+)/ ``` 像是: ``` /([0-9]+)([a-zA-Z]+)/ ``` ![](https://i.imgur.com/pqmJdbN.png) ![](https://i.imgur.com/CGT8QHN.png) ![](https://i.imgur.com/Q5I0ELD.png) ![](https://i.imgur.com/nEjvinO.png) 這個網站可以協助我們摸索格式的寫法: https://regex101.com/ 期待大家用 php 寫出好看的網頁~ --- ###### tags: `ckefgisc23rd`