php 可以單獨建立 .php 檔案,也可以在 HTML 中添加 php 標記後進行書寫.若不顯示漢字,需在標記內不添加:
header("Content-type:text/html;charset=utf-8");
一. PHP 的標記
或者
聲明後便可以在其中編寫 php 代碼 php 還有其他標記方式, 不作瞭解.
二. php 注釋
注釋方式與 JS 類似.
三. 變數 與 常量
1. 變數
- 變數的聲明形式為:
$a = 10;$b = "aaa";
輸出變數的值,可以使用: echo 進行輸出查詢.同時,變數聲明時允許互相進行嵌套, 如:
$n = 'hello';$$n = 'gaoshan';echo $hello;
輸出結果為:
gaoshan
echo "這是一個百度的連結";或echo "";
那麼,輸出的形式即為一個串連以及一個按鈕.
- 有一點需要注意的是, 賦值時$c=$a表示把 a 的值賦給 c 但是對 a 本身沒有影響, 而&$c=$a 表示將 a 的儲存地址賦值給 c , 之後a 和 c 改一個,另一個就跟著一起變化.
2. 常量
參數定義
常量:不能改變的量常量一經定義,就不能再次被賦值第一個參數:要定義的常量名第二個參數:常量的值第三個參數:對大小寫是否 _*不敏感(true)_*
舉例:
define("PI", "3.1415926", true);echo PI;echo pi;
此時,兩個輸出都為3.1415926, 但是如果將參數三的true改為false, 那麼echo pi;報錯.
3. echo 特點
- echo 後如果串連的字串中含有變數, 那麼應根據需要使用""或者'', 在""中,"$"預設為變數的聲明符號,但是在''中,"$"預設為一個符號,以"$"原型進行輸出.如
$name = "Tom";$age = 22;echo "我的名字叫$name,年齡$age";echo '我的名字叫$name,年齡$age';
此時的列印結果為
我的名字叫Tom,年齡22我的名字叫$name,年齡$age
- 當我們想要輸出一個對象的格式及內容時, 通常採用的輸出函數為var_dump( ).如
var_dump($age);var_dump("hhahsdhd");
此時列印的結果為
int(22) string(8) "hhahsdhd"
echo "Z12" + "34B" + "5" + true;
此時列印的結果為
40 //0 + 34 + 5 + 1
4. 超關鍵字
可以在所有情境使用的關鍵字如:
echo __LINE__; // 輸出此行行數
echo __FILE__; // 輸出此檔案的檔案地址
function show() { echo __FUNCTION__; // 輸出此函數的函數名};show(); // 輸出為 show
次超關鍵字
echo $_SERVER['HTTP_USER_AGENT']; // 列印伺服器資訊
定義一個類
class Person { public function showName() { // 函數名不區分大小寫 echo __CLASS__; //列印出是哪個類的 結果為Person echo __METHOD__; // 列印出類的方法 }}
使用建立的這個類建立對象
$p = new Person();echo $p -> showName(); // 結果為Person 和Person::showName
5. 字串
介紹了一些 php 中操作字串的常用函數
1. 字串的串連
輸出的時候是用" . "進行串連的, 如
$str = "world";echo $str . "hahaha"; //顯示為: worldhahaha
注:在這裡, 用" . "和用" , "串連在視覺上是沒有區別的, 但是用點串連是把兩個字串拼接為一個, 而用逗號則是把兩個字串單純地放在一起顯示而已.
2. 擷取字串的長度
echo strlen($str); //顯示為5
3. 判斷子字串第一次出現的位置
如判斷 "bc" 在 "aabBcbc" 中出現的位置
echo strpos("aabBcbc", "bc"); // 輸出為 5
如果不區分大小寫
echo stripos("aabBcbc", "bc"); // 輸出為 3 4. 二進位安全的概念
_*概念 :*_ 對字串做操作時,是否代表字串結束的"\0"字元做處理,是停止,還是繼續往下檢查,這個特性是繼承 C語言的.
- _*不安全:*_ 停止, 因為無法讀取\0後面的字串
- _*安全:*_ 把"\0"當做字元,繼續向下讀取
舉例:
echo strcoll("aaaa", "aaaa\0asdasds");
這裡舉了一個不安全的字串相關函數,是判斷兩個字串是否相等的. 我們看到, 在讀取第二個字串時, 函數將"\0"後面的內容都省略了, 判斷結果為"0", 即相等.
5. 字串的替換
$str1 = "gaoshan@163.com";echo str_replace("g", "s", $str1); // 這是敏感大小寫方式echo str_ireplace("G", "s", $str1); // 這是忽略大小寫方式// 以上兩個輸出的結果均為: saoshan@163.com 6. 字串的截取
這裡我們使用兩種方法:
1) substr(要做處理的字串, 從第幾個開始截取, 截取幾個字元)
echo substr("hello world", 3, 4); // 輸出為: lo w 2) 找到字串第一次出現的位置,並返回之後的字元
echo strstr("hello world", "lo"); // 輸出結果為: lo world 7. 刪除字串前後的空格
$strT = " hello world!!! "; echo trim($strT);// 輸出結果為: hello world!!!
8. 字串大小寫轉化
小轉大
$strA = "FGJHGkbadkahd";echo strtolower($strA); // 輸出結果為: fgjhgkbadkahdecho strtoupper($strA); // 輸出結果為: FGJHGKBADKAHD
9. 倒序字串
echo strrev("hello PHP"); // 輸出結果為: PHP olleh 10. 取出標籤內的內容 / 取出含標籤的內容
echo strip_tags("TOM");// 輸出結果為: TOMecho htmlspecialchars("TOM");//輸出結果為: TOM
6. 數組
1. 數組的建立和列印
$arr = array(4, 7, 6, 2, 9);var_dump($arr);// 輸出結果為: array(5) { [0]=> int(4) [1]=> int(7) [2]=> int(6) [3]=> int(2) [4]=> int(9) } 2. 數組元素的訪問
echo $arr[2]; // 輸出元素為: 6
3. 添加數組元素
$arr[] = 10;$arr[] = array('a','b');var_dump($arr);// 輸出結果為; array(7) { [0]=> int(4) [1]=> int(7) [2]=> int(6) [3]=> int(2) [4]=> int(9) [5]=> int(10) [6]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } } print_r($arr); // 專門用來輸出數組的函數, 輸出結果為: Array ( [0] => 4 [1] => 7 [2] => 6 [3] => 2 [4] => 9 [5] => 10 [6] => Array ( [0] => a [1] => b ) ) 4. 數組的標準建立及操作方式
$arrK=array("user"=>"TOM","password"=>"123456");print_r($arrK); // 輸出的結果為: Array ( [user] => TOM [password] => 123456 ) echo $arrK["user"]; // 輸出結果為: TOM$arrK["sex"] = "male";$arrK[] = "aaa";print_r($arrK); // 輸出結果為: Array ( [user] => TOM [password] => 123456 [sex] => male [0] => aaa ) 5. 數組的遍曆
接4代碼
foreach ($arrK as $key => $value) { echo $key."的值是:".$value."
";};
輸出結果為:
user的值是:TOMpassword的值是:123456sex的值是:male0的值是:aaa
6. 刪除數組中的某個索引值對
假設有這樣的一個數組
$arr = array("name" => "Tom", "age" => 22);print_r($arr);// 輸出結果為: Array ( [name] => Tom [age] => 22 ) echo json_encode($arr);// 輸出結果為: {"name":"Tom","age":22}//這是把數組資料轉化成 JSON 格式,方便閱讀
那麼如果要刪除數組中的 name 索引值對
unset($arr["name"]);print_r($arr); // 輸出結果為: Array ( [age] => 22 )
7. 數組的長度
echo count($arr);
8. 判斷一個值是否在數組內
注意:這裡的有沒有,指的是值,"1"和1是等價的. 這個函數會有一個布爾傳回值.
$arr1 = array(3,6,9,5,33,"10");var_dump(in_array(33, $arr1)); // true
9. 二維數組
$arrT = array(array(11,22,33),array(44,55,66));echo $arrT[1][2]; // 列印結果為: 66
10. 速產生一個數組
$arrfast1 = range(1,9);
$arrfast2 = range("A","a");
7. 表單
php 檔案是如何擷取 HTML 提交的資訊呢?
HTML:
PHP:
當在 HTML 檔案中提交 Submit 表格時, 資訊就會在 PHP 檔案中被列印出來.
8. 函數
1. 函數的使用
在 php 中函數的使用和 JS 是基本相同的.
function show() { echo "aaaa";};show();
帶參數:
function sayHello($a) { echo "" . $a;};sayHello("asdhkasdh");
帶傳回值:
function retFunc() { return "lalalala";}echo retFunc(); 2. 傳引用參數
不加 & 的時候,只是將 $a = 20;的那個20的值賦值給函數,在函數中改了參數值,$a的值不變加了 & 的時候,是將$a = 20;的地址賦給函數的參數,在函數中改了參數值,$a的值變化
function varOp(&$c) { $c =40; echo $c;}$a = 20;varOp($a);echo $a; 3. 賦給函數參數預設值
function add($m, $n=9) { echo $m + $n;}add(3, 4); // 3+4add(3); // 3+9ADD(3); // 不區分大小寫
##**四. 檔案控制**利用 php 可以對檔案夾內的檔案進行控制操作.首先在同一個目錄下,建立一個名為11.txt 的檔案.
1. 開啟檔案
$f = fopen("11.txt", "r");
r 為 mode 形式, 生命了可以對檔案進行的處理方式.
| 代碼 |
含義 |
| "r" |
唯讀方式開啟,將檔案指標指向檔案頭。 |
| "r+" |
讀寫方式開啟,將檔案指標指向檔案頭。 |
| "w" |
寫入方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。 |
| "w+" |
讀寫方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。 |
| "a" |
寫入方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。 |
| "a+" |
讀寫方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。 |
| "x" |
建立並以寫入方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 調用失敗並返回 FALSE,並產生一條 E_WARNING 層級的錯誤資訊。如果檔案不存在則嘗試建立之。 |
| "x+" |
建立並以讀寫方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 調用失敗並返回 FALSE,並產生一條 E_WARNING 層級的錯誤資訊。如果檔案不存在則嘗試建立之。 |
2. 讀取檔案
讀取檔案有以下四種方式:
1). 按字元讀取
$str = fread($f, 3);// 讀的什麼檔案 , 以及一次讀多長(3個位元組表示一個漢字)
可以擷取檔案的大小, 全部讀取
$str = fread($f, filesize("11.txt")); 2). 按行讀取
$str = fgets($f); // 這是一行 echo $str;
按行遍曆檔案
while ($str=fgets($f)) { echo $str."
";} 3). 把檔案放在數組裡
$arr = file("11.txt");print_r($arr); 4). 整篇讀取(速度最快)
$str = file_get_contents("11.txt");echo $str;
3. 寫入檔案
一行行寫,寫入的內容會覆蓋原內容,如果檔案本身不存在,會建立新檔案,然後寫入.
$f = fopen("11.txt","w");fwrite($f, "Tom\n"); fwrite($f, "Jerry\n");
如果需要整篇寫入內容:
file_put_contents("11.txt", " 吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮");
4. 關閉檔案
操作完關閉檔案是一個好習慣
fclose($f);
5. 拷貝檔案
直接將檔案拷貝一份放在原檔案夾內
copy("11.txt", "22.txt");
6. 重新命名檔案
rename("22.txt", "33.txt"); // 22.txt 被重新命名為33.txt
7. 刪除檔案
unlink("33.txt"); // 33.txt 被刪除
##**五. 目錄操作**
首先擷取目前的目錄
$d = opendir(".") // . 表示目前的目錄, .. 表示上級目錄
1. 開啟目前的目錄
1). 依次讀取目前的目錄中的一條內容
$str = readdir($d);echo $str;
如果想依次讀取目錄中的幾條內容,就將上面的代碼重複輸入.
2). 讀取並列印此目錄下的所有檔案
將此目錄中的內容迴圈讀取, 並依次列印
while ($str = readdir($d)) { echo $str . "";} 3). 關閉檔案夾
closedir($d);
2. 擷取目錄檔案的數組
$arr = scandir(".");for ($i=0; $i 3. 建立 / 刪除 一個目錄(顯示傳回值)
建立:
var_dump(mkdir("test")); // bool(true) 刪除:
var_dump(rmdir("test")); // bool(true) 只有空的目錄才可以被刪除 4. 操作 URL
首先在本機擷取一個地址地址的基本資料列印
$path = "http://localhost/PHPSample/dirManage%e7%9b%ae%e5%bd%95%e6%93%8d%e4%bd%9c.php"; // 檔案路徑
$str = basename($path); // 檔案名稱
$str = dirname($path); // 所在檔案夾的名字
$newPath = $str."/login.html"; // 利用 php echo 的特點,我們可以將擷取的地址拼接為新的地址進行操作
$arr = pathinfo($path); // 將相關資訊一次性列印