php基础学习大全
文章目錄
- 第一章:PHP語言基礎
- 1.1 PHP的標記風格
- 1.3 PHP的數據類型
- 1.3.1 標量數據類型
- 1.3.2 復合數據類型
- 1.3.3 數據類型轉換
- 1.3.4 檢測數據類型
- 1.4 PHP常量
- 1.4.1 聲明和使用常量
- 1.4.2 預定義常量
- 1.5 PHP變量
- 1.5.1 變量聲明及使用
- 1.5.2 變量作用域
- 1.5.3 可變變量
- 1.5.4 預定義變量
- 1.6 PHP運算符
- 1.7 PHP函數
- 第二章:流程控制語句
- 2.1 if系列語句
- 2.2 switch語句
- 2.3 while與do……while語句
- 2.4 for語句
- 2.5 foreach語句
- 2.6 跳轉語句
- 第三章:字符串操作
- 3.1 字符串的定義方法
- 3.1.1 單引號與雙引號的區別
- 3.1.2 使用定界符定義字符串
- 3.2 字符串操作
- 3.2.1 去除字符串首尾空格和特殊字符
- 3.2.2 轉義、還原字符串數據
- 3.2.3 獲取字符串長度
- 3.2.4 截取字符串
- 3.2.5 比較字符串
- 3.2.6 檢索字符串
- 3.2.7 替換字符串
- 3.2.8 格式化字符串
- 3.2.9 分割字符串(及print_r與echo的區別)
- 3.2.10 合并字符串
- 第四章:正則表達式
- 4.1 語法規則
- 4.2 函數
- 第五章:數組
- 5.1 數組的類型
- 5.1.1 數字索引數組
- 5.1.2 關聯數組
- 5.2 輸出數組
- 5.3 二維數組
- 5.4 遍歷數組
- 5.4.1 foreach遍歷
- 5.4.2 list函數遍歷
- 5.5 字符串與數組的轉換
- 5.5.1 字符串轉數組
- 5.5.2 數組轉字符串
- 5.6 統計數組元素個數
- 5.8 獲取數組中最后一個元素
- 5.9 向數組中添加元素
- 5.10 刪除數組中重復的元素
- 第六章:PHP與Web頁面交互
- 6.1 表單
- 6.1.1 form標簽屬性
- 6.1.2 其它
- 6.2 PHP參數傳遞的常用方法
- 6.2.1 \$\_POST[]和\$\_GET[]全局變量
- 6.2.2 \$\_SESSION[]變量
- 6.2.3 獲取參數值
- 第七章:PHP與JavaScript交互
- 7.1 JavaScript基礎
- 第八章:PHP與MySQL
- 8.1 操作MySQL數據庫
- 8.1.1 連接
- 8.1.2 選擇數據庫
- 8.1.3 執行SQL語句
- 8.1.4 釋放內存
- 8.1.5 關閉連接
- 8.1.2 選擇數據庫
- 8.1.3 執行SQL語句
- 8.1.4 釋放內存
- 8.1.5 關閉連接
第一章:PHP語言基礎
1.1 PHP的標記風格
-
XML風格
<?phpecho "XML風格的標記"; ?>推薦使用此種標記,服務器不能禁用,在XML和XHTML中都可以使用
-
腳本風格
<script language="php">echo "腳本風格的標記"; </script> -
簡短風格
<? echo "簡短風格標記"; ?> -
ASP風格
<%echo "ASP風格標記"; %>簡短風格和ASP風格標記的使用,需要對php.ini進行配置,將里面的short_open_tag和asp_tags都設置為on,然后重啟Apache服務器即可
###1.2 PHP的注釋
<?php/*You aresocute */echo "666"; //輸出666echo "520"; #輸出520 ?>多行注釋: /* */(類似于C++)
單行注釋: //或#
注意:單行注釋里不要出現“ ?> ”的標志,這樣會讓解釋器認成php腳本結束的標志
1.3 PHP的數據類型
1.3.1 標量數據類型
標量數據類型是數據結構中最基本的數據單元,只能存儲一個數據
| 布爾型 | 只有true和false兩個值 |
| 字符串型 | 單個或連續的字符集合 |
| 整型 | 整數類型,正數或負數都可 |
| 浮點型 | 存儲有小數位的數字 |
1.3.2 復合數據類型
-
數組(array)
<?php//三種創建方式//第一種:$array_name = array('value1', 'value2'......);//第二種:$array_name[key] = 'value';//第三種:$array_name = array(key1 => value1, key2 => value2......); ?> -
對象(object)
對象是類的實例
1.3.3 數據類型轉換
-
自動轉換
- bool型與數值型運算:true轉為整數1,false轉為整數0
- 字符串型與數值型運算:若字符串是以數字開頭,則轉換為開頭的那個數字,否則轉換為0
- 字符串拼接時:true變為字符串’1’,false和null變為空字符串’’,整數和浮點數會轉換成字符串型數據
- 邏輯運算:0,0.0, ‘’,NULL,‘0’,空數組都會被轉為false
-
強制轉換
轉換符功能舉例 (boolean)或(bool) 轉布爾型 $num = (bool)?$num、$num = (boolean)$num (string) 轉字符串型 $num = (string)$num (int)或(integer) 轉整型 $num = (int)$num、$num = (integer)$num (float)、(double)、(real) 轉浮點型 $num = (float)$num (array) 轉數組 $num = (array)$num **bool settype(var, type)**可以幫助完成類型轉換,如:
$num = '3.14phporg'; settype($num, 'int'); echo $num;此段代碼輸出結果為3
此外,"echo settype($num, ‘int’);"的輸出結果為1,因為settype函數的返回值是個bool類型,如果轉換成功,結果就為true,輸出值就為1
還有一些函數:
函數功能 intval(var) 轉整型 floatval(var)、doubleval(var) 轉浮點型 boolval(var) 轉布爾型
1.3.4 檢測數據類型
| is_bool(var) | 檢測變量是否為布爾型 |
| is_string(var) | 檢測變量是否為字符串 |
| is_float(var)、is_double(var) | 檢測變量是否為浮點型 |
| is_integer(var)或is_int(var) | 檢測變量是否為整型 |
| is_null(var) | 檢測變量是否為空(NULL) |
| is_array(var) | 檢測變量是否為數組類型 |
| is_numeric(var) | 檢測變量是否為數字或由數字組成的字符串 |
1.4 PHP常量
1.4.1 聲明和使用常量
常量值被定義后,在腳本的其他任何地方都不能改變。PHP中使用==define()==函數來定義常量,該函數語法如下:
define(string constant_name, mixed value, case_sensitive = false)
| constant_name | 必選參數,常量的名稱,即標識符 |
| value | 必選參數,常量的值 |
| case_sensitive | 可選參數,指定是否大小寫敏感,設定為true則表示不敏感 |
其他關于常量的函數:
| constant(constant_name) | constant_name為常量名,如何該常量存在則獲取常量值,否則報錯 |
| defined(constant_name) | 判斷常量是否被定義,若被定義則返回true |
例子:
<?phpdefine('AGE', '年齡18');echo AGE.'<br>'; //輸出常量AGE的值echo Age.'<br>'; //默認大小寫敏感,不存在常量Age,輸出字符串'Age'define('NAME', '小明', true);//true表示大小寫不敏感echo NAME.'<br>';echo name.'<br>'; //兩者輸出結果相同echo constant('AGE').'<br>';$age = 'AGE';echo constant($age).'<br>';echo constant('aGe').'<br>'; //常量不存在,報錯echo defined($age); ?>運行結果:
年齡18
Age
小明
小明
年齡18
年齡18
Warning: constant(): Couldn’t find constant aGe in …
1
1.4.2 預定義常量
PHP里有很多已經定義、常量,我們可以利用這些常量來獲取PHP中的信息
| __FILE__ | PHP程序文件名 |
| __LINE__ | PHP程序行數 |
| PHP_VERSION | PHP程序的版本 |
| PHP_OS | 執行PHP解析器的操作系統 |
| TRUE | 該常量是一個真值(true) |
| FALSE | 該常量是一個假值(false) |
| NULL | 一個空值(null) |
| E_ERROR | 該常量指到最近的錯誤處 |
| E_WARNING | 該常量指到最近的警告處 |
| E_PARSE | 該常量指到解析語法有潛在問題處 |
| E_NOTICE | 該常量為發生不尋常處的提示 |
1.5 PHP變量
1.5.1 變量聲明及使用
變量名由數字、字母或下劃線組成,但不能以數字開頭。除此之外的其他字符也不能夠出現在變量名中。變量是由"$"符加變量名組成。
<?php$age_666 = 'my age is 18!'; //合法變量名$123_flag = 'valid name'; //以數字開頭,非法變量名$age@^ = 'vaild string'; //含有非法字符@、^,非法變量名 ?>變量賦值:
<?php$string1 = 'value1'; //變量聲明時直接賦值$string2 = $string1; //變量間傳值$string3 = &$string1; //引用傳值 ?>引用賦值使得多個變量訪問同一內存,其中一個變量值改變時,其它值也改變
1.5.2 變量作用域
| 局部變量 | 函數內部定義的變量,只在該函數內部有效 |
| 全局變量 | 被定義在所有函數以外的變量,作用于整個PHP文件,但在用戶自定義函數內部是不可用的。可以使用global關鍵字使得該變量可以在自定義函數內使用 |
| 靜態變量 | 能在函數調用結束后仍然保留變量值,使用static關鍵字來聲明 |
1.5.3 可變變量
看一段例子:
<?php$a = 'b';$b = '我喜歡PHP';echo $a.'<br>';echo $$a; ?>第一輸出的是$a?的值’b’,這沒有問題。第二個輸出的是’$$a’的值,首先,$a的值為’b’,$$a將$a用b替換,就變成了$b,所以$$a輸出的是$b的值。
1.5.4 預定義變量
PHP提供了很多非常實用的預定義變量, 通過這些預定義變量可以獲取用戶會話、 用戶操作系統 的環境和本地操作系統的環境等信息。下表列舉出了幾個。
| $_COOKE | 通過HTTPCook.ie傳遞到腳本的信息,這些cookie多數是由執行PHP腳本時 通過setcookie()函數設置的 |
| $_ SESSION | 包含與所有會話變量有關的信息。$_SESSION變量主要應用于會話控制和頁 面之間值的傳遞 |
| $_POST | 包含通過POST方法傳遞的參數的相關信息。牛要用千獲取通過POST方認提交的數據 |
| $_GET | 包含通過GET方法傳遞的 參數的 相關信息。主荌用于獲取通過GET方法提交 的數據 |
1.6 PHP運算符
-
算術運算符
符號描述 + 加法運算符,$a+$b - 減法運算符,$a-$b * 乘法運算符,$a*$b / 除法運算符,整除,$a/$b % 取余運算符,$a%$b -
字符串運算
'.'可以連接兩個字符串
<?php $n = '3.14abc'; $m = 2; echo $n.$m.'<br>'; echo $m.$n.'<br>'; echo ($m+$n).'<br>'; echo ($n+$m).'<br>'; ?>輸出結果:
3.14abc2
23.14abc
5.14
5.14 -
賦值運算符
如:$a += $b的意思是$a = $a + $b。此外,還有類似的-=、*=、/=、.=、%=
-
位運算符
符號作用 & 按位與 | 按位或 ^ 按位異或 ~ 按位取反 << 向左移位 >> 向右移位 -
邏輯運算符
符號作用 &&或and 邏輯與 ||或or 邏輯或 xor 邏輯異或(用于判斷一真一假的情形) ! 邏輯非 -
條件運算符
"? :“就是條件運算符,用法如"echo (5>2) ? 5 : 2;”,如果’?‘前面的表達式為真,輸出’:‘前的內容,否則輸出’:'后的內容
-
比較運算符
運算符名稱描述 x == y 等于 如果x等于y,返回true(5=='5’成立) x === y 絕對等于 如果 x 等于 y,且它們類型相同,則返回 true(5==='5’不成立) x != y 不等于 如果 x 不等于 y,則返回 true x !== y 絕對不等于 如果 x 不等于 y,或它們類型不相同,則返回 true
1.7 PHP函數
-
定義
function 函數名( 參數 ){
函數體;
}
-
傳遞參數
<?phpfunction aaa($m){$m = $m*5 + 10;echo $m.'<br>'; }$m = 10;aaa($m); //按值傳參,不改變原參數的值echo $m; ?>/*輸出結果:60,10*/<?phpfunction aaa(&$m){$m = $m*5 + 10;echo $m.'<br>'; }$m = 10;aaa($m); //引用傳參,改變原參數的值echo $m; ?>//結果:60,60默認參數:
<?phpfunction aaa($m, $t=5){$m = $m*5 + 10 + t;echo $m.'<br>'; }$m = 10;aaa($m); //沒傳t值,默認為5,輸出65aaa($m, 10); //t值為10,輸出70echo $m; ?>注意:默認參數必須放在非默認參數的右側,從PHP5開始,默認值也可以通過引用傳遞
-
變量函數
PHP很有意思的一點就是這個變量函數
<?phpfunction aaa(){echo 'my name ';}function bbb(){echo 'is ';}function ccc($name){echo $name;}$func = 'aaa'; //$func值與函數名'aaa'相同$func(); //調用aaa函數$func = 'bbb'; //$func值與函數名'bbb'相同$func(); //調用bbb函數$func = 'ccc'; //$func值與函數名'ccc'相同$func('scgg'); //調用ccc函數 ?>輸出結果為:
my name is scgg
第二章:流程控制語句
2.1 if系列語句
用一個例子描述,假如小明的考試成績為*$grade*,成績低于60分為不及格,60~79為及格,80~89為良好,90~100為優秀,那么我們可以通過if語句來判斷小明所處的等級。
<?php$grade = rand(0,100); //rand(a, b)函數可以隨機生成a到b范圍內的一個數if ($grade < 60){echo '小明成績為'.$grade.',不及格,要補考';}else if ($grade >= 60 and $grade <= 79){echo '小明成績為'.$grade.',及格了';}else if ($grade >= 80 and $grade <= 89){echo '小明成績為'.$grade.',良好';}else{echo '小明成績為'.$grade.',非常優秀!';} ?>執行結果為:
第一次運行結果:
小明成績為33,不及格,要補考
第二次運行結果:
小明成績為76,及格了
第三次運行結果:
小明成績為100,非常優秀!
2.2 switch語句
按照上例中的等級劃分:
<?php$class = array('不及格', '及格', '良好', '優秀');$num = rand(0,3);switch($class[$num]){case '不及格':echo '等級為'.$class[$num].',小明成績低于60分';break;case '及格':echo '等級為'.$class[$num].',小明成績在60~79之間';break;case '良好':echo '等級為'.$class[$num].',小明成績在80~89之間';break;case '優秀':echo '等級為'.$class[$num].',小明成績高于90分';} ?>一次運行結果:
等級為優秀,小明成績高于90分
2.3 while與do……while語句
打印出1~20內的所有偶數
<?php//while語句$num = 1;echo '20內的所有偶數為:';while ($num <= 10){if ($num % 2 == 0)echo ' '.$num;$num++;} ?>結果:
20內的所有偶數為: 2 4 6 8 10
?php//while語句$num = 1;echo '20內的所有偶數為:';do{if ($num % 2 == 0)echo ' '.$num;$num++;}while ($num <= 10); ?>結果:
20內的所有偶數為: 2 4 6 8 10
2.4 for語句
輸出10的階乘
<?php$sum = 1;for($num = 1; $num <= 10; $num++){$sum *= $num;}echo '10的階乘為'.$sum; ?>結果:
10的階乘為3628800
2.5 foreach語句
PHP5中foreach語句支持對數組和對象的遍歷,且只支持這些遍歷。
<?php$string_1 = array('my', 'age', 'is', '20');$string_2 = array('1'=>'are', '2'=>'you', '3'=>'ok!');foreach($string_1 as $value) //從頭到尾遍歷數組,值賦給$value{echo $value.' ';}echo '<br>';foreach ($string_2 as $key => $value) //下標賦值給$key,值賦給$value{echo $key.':'.$value.' ';}echo '<br>';foreach ($string_1 as $key => $value){echo $key.':'.$value.' ';} ?>運行結果:
my age is 20
1:are 2:you 3:ok!
0:my 1:age 2:is 3:20
2.6 跳轉語句
| continue | 跳過本次循環剩余步驟,直接進入下次循環 |
| break | 跳出循環體 |
第三章:字符串操作
3.1 字符串的定義方法
3.1.1 單引號與雙引號的區別
<?php$text_1 = 'Hello, world!';$text_2 = "Hello, world!";echo $text_1.'<br>';echo $text_2.'<br>';$str1 = 'he said >>> $text_1'; //單引號里$text_1不會被解析,被當成普通字符串處理$str2 = "he said >>> $text_1"; //雙引號里$text_1會被解析器解析,會變為'Hello, world!'echo $str1.'<br>';echo $str2.'<br>'; ?>結果:
Hello, world!
Hello, world!
he said >>> $text_1
he said >>> Hello, world!
故兩者區別為:
| 雙引號 | 里面的內容會被解析,如果有變量,則替換為該變量的值 |
3.1.2 使用定界符定義字符串
格式如下:
<<<str
格式化文本
str
'<<<'是關鍵字,必須使用;'str’是用戶自定義的定界符,用于標識文本的起始和結尾。
示例:
<?php$str = '定界符,';echo <<<border<font color="blue">你學會$str 了嗎?</font> border; ?>結果:
你學會定界符, 了嗎?
注意:在上面的代碼中, 值得注意的是, 在定界符內不允許添加注釋, 否則程序將運行出錯。 結束標識符所在的行不能包含任何其他字符, 而且不能被縮進, 在標識符分號前后不能有任何空白字符或制表符。
3.2 字符串操作
3.2.1 去除字符串首尾空格和特殊字符
| trim(字符串, 字符) | 去除字符串里的指定字符。若字符選項為空,則去除字符串兩端的空格 |
| ltrim(字符串, 字符) | 去除字符串左端的指定字符,若無指定字符,則去除左端的空格 |
| rtrim(字符串, 字符) | 去除字符串右端的指定字符,若無指定字符,則去除右端的空格 |
3.2.2 轉義、還原字符串數據
-
**addslashes(str)**函數
str為需要轉義的字符串,該函數會在單引號、雙引號、反斜線與NULL字符前自動添加反斜線進行轉義
-
**stripslashes(str)**函數
返回值為一個去除轉義斜線后的字符串
例子:
<?php$sql = "select * from user where id = '666'";echo '轉義后為:'.addslashes($sql);echo '<br>';$sql = addslashes($sql);echo '反轉義后為:'.stripslashes($sql); ?>結果:
轉義后為:select * from user where id = ‘666’
反轉義后為:select * from user where id = ‘666’
-
**addcslashes(string, char)**函數
對字符串string里的指定字符char進行轉義,其他非字母數字且ASCU碼低于 32 以及高于126 的字符均轉換成八進制表示。
-
**stripcslashes(str)**函數
用于還原addcslashes函數轉義的字符串。
例子:
<?php$sql = "我是scgg, hello!";echo '轉義后為:'.addcslashes($sql,$sql);echo '<br>';$sql = addcslashes($sql,$sql);echo '反轉義后為:'.stripcslashes($sql); ?>結果:
轉義后為:\346\210\221\346\230\257\s\c\g\g,\ \h\e\l\l\o!
反轉義后為:我是scgg, hello!
3.2.3 獲取字符串長度
- **strlen(str)**函數獲取指定字符串str的長度(漢字占兩個字符)
3.2.4 截取字符串
語法:
string substr(str, start, length)
| str | 指定字符串對象 |
| start | 指定開始截取字符串的位置。 如果參數start為負數, 則從字符串的末尾開始截取,字符串第一個字符位置為0 |
| length | 指定從開始位置截取字符的個數, 如果length為負數, 則表示取到倒數第length個字符 |
例子:
<?phpecho substr("She is a well-read girl", 0); echo "<br>"; echo substr("She is a well-read girl", 4, 14);echo "<br>"; echo substr("She is a well-read girl", -4, 4); echo "<br>";echo substr("She is a well-read girl", 0,-4); ?>結果:
She is a well-read girl
is a well-read
girl
She is a well-read
3.2.5 比較字符串
-
按字節進行字符串的比較
按字節進行字符串比較的方法有兩種, 分別是 strcmp()和 strcasecmp()函數, 通過這兩個函數即可 實現對字符串進行按字節的比較。這兩種函數的區別是 strcmp()函數區分字符的大小寫,而 strcasecmp() 函數不區分字符的大小寫。 由于這兩個函數的實現方法基本相同, 這里只介紹 strcmp()函數。
int strcmp (string str1, string str2)
str1 和 str2 指定要比較的兩個字符串。 如果 strl 和 str2 相等, 則返回 0; 如果 str1大于 str2, 則返回值大于 0; 如果 str1小于 str2, 則返回值小于 0。
-
按自然排序法進行字符串的比較
int strnatcmp (string str1, string str2)
如果字符串str1和str2相等,則返回0;如果str1大于str2則返回值大于0;如果str1小于str2, 則返回值小于0。strnatcmp()函數區分字母大小寫。
注意:在自然運算法則中,2比10小,而在計算機序列中,10比2小,因為"10’'中的笫一個數字是’1’它小于2。
例子:
<?php$str1 = 'str2.jpg';$str2 = 'str100.jpg';$str3 = 'php';$str4 = 'PHP';echo strcmp($str1, $str2).'<br>';echo strnatcmp($str1, $str2).'<br>';echo strcmp($str3, $str4).'<br>';echo strnatcmp($str3, $str4).'<br>'; ?>結果:
1
-1
1
1
-
指定從源字符串的位置開始比較
int strncmp(string str1 ,string str2,int len)
此函數用于比較前len個字符,其中len為指定參與比較的字符的數量,此函數區分大小寫
3.2.6 檢索字符串
-
strstr(string, needle)
參數描述 string 必要參數, 指定從哪個字符串中進行搜索 needle 必要參數, 指定搜索的對象。 如果該參數是 個數值, 那么將搜索與這個數值的 ASCII 值相匹配的字符 例子:
<?php$str1 = 'str2.jpg';$str2 = strstr($str1,'.');$str3 = strstr($str1,'2');echo $str2.'<br>'.$str3; ?>結果:
.jpg
2.jpgstrrchr()函數與其正好相反, 該函數是從字符串后序的位置開始檢索子串(子字符串)的,結果與strstr()相同
-
使用**substr_ count(str, char)**函數檢索子串出現的次數
3.2.7 替換字符串
-
**str_ireplace()**函數
str_ireplace (search, replace, subject [, count])
參數描述 search 要搜索的值, 可以使用array來提供多個值 replace 指定替換原字符的值 subject 要被搜索和替換的字符串或數組 count 執行替換的數量 -
**substr_replace()**函數
substr_replace(string, repl, start,[ length])
參數描述 string 原始字符串 repl 指定替換后的新字符串 start 指定替換字符串開始的位置。 正數表示替換從字符串的第 start 位置開始; 負數表示替換從字符串的倒 數第 start 位置開始; 0 表示替換從字符串中的第一 個字符開始 length 可選參數,指定返回的字符串長度。默認值是整個字符串。正數表示被替換的子字符串的長度;負數表示待替換的子寧符串結尾處距離字符串末端的字符個數;0 表示將 repl插入到 string 的 start 位置處
3.2.8 格式化字符串
number_format(float number[,int decimals [,string dec_point[,string thousand_sep]]])
number為要格式化的數字,dee皿als為要保留的小數位數,dec_point為指定小數點顯示的字符,thousands_sep為指定千位分隔符顯示的字符 。此函數可以有1、2、4個參數,但不能是3個參數
例子:
<?php $num = 12345678.12345689;echo number_format($num,5,'.','"'); ?>結果:
12"345"678.12346
3.2.9 分割字符串(及print_r與echo的區別)
explode(string delimiter,string str[int limit])
| delimiter | 邊界上的分隔符 |
| str | 要被分割的字符串 |
| limit | 分割次數,可選參數 |
例子:
<?php $a = 'c++%python%php%go%java';$b = explode('%',$a);print_r($b);echo '<br>';echo $b.'<br>';echo $b[0]; ?>結果:
Array ( [0] => c++ [1] => python [2] => php [3] => go [4] => java )
Array
c++
print_r可以輸出數組,echo只能輸出單個元素
3.2.10 合并字符串
**implode(strihg glue, array pieces) **
glue是指定的連接符,pieces是數組類型,指定要被合并的數組。
第四章:正則表達式
4.1 語法規則
| ^ | 表示行的開始 | ^word |
| $ | 表示行的結尾 | word$ |
| \b | 表示要查找的字串為一個完整的單詞 | \bword\b |
| \B | 表示要查找的不是一個完整的單詞,而是單詞或字符串的一部分 | \Btem\B |
| [ ] | 忽略大小的匹配一個字符 | [tT] |
| [[:digit:]] | 十進制數字集合,等同于[0-9] | |
| [[:alnum:]] | 字母和數字的集合,等同于[a-zA-Z0-9] | |
| [[:alpha:]] | 字母集合,等同于[a-zA-Z] | |
| [[:blank:]] | 空格和制表符 | |
| [[:xdigit:]] | 十六進制數字 | |
| [[:punct:]] | 特殊字符集合。包括鍵盤上的所有特殊字符,如“!” “@” “#” “S” “?”等 | |
| [[:print:]] | 所有的可打印字符(包括空白字符) | |
| [[:space:]] | 空白字符(空格、換行符、換頁符、回車符、水平制表符) | |
| [[:graph:]] | 所有的可打印字符(不包括空白字符) | |
| [[:upper:]] | 所有大寫字母,等同于[A-Z] | |
| [[:lower:]] | 所有小寫字母,等同于[a-z] | |
| [[:cntrl:]] | 控制字符 | |
| | | 或,表選擇 | (T|t)(M|m)表示匹配四種組合方式:TM、Tm、tM、tm |
| - | 連字符,表示可選字符的范圍 | [a-z] |
| [^] | ^放在括號內表示排除,取非的意思 | [^a-zA-Z] |
| ? | 匹配前面的字符0次或1次 | cplou?r:color或colour |
| + | 匹配前面的字符一次或多次 | |
| * | 匹配前面的字符0次或多次 | |
| {n} | 匹配前面的字符n次 | |
| {n,} | 匹配前面的字符最少n次 | |
| {n,m} | 匹配前面的字符最少n次,最多m次 | |
| . | 匹配除換行符外任意的一個字符 | |
| \ | 轉義等功能 | |
| \d | 任意一個十進制數字,相當于[0-9] | |
| \D | 任意一個非十進制數字 | |
| \s | 任意一個空白字符(空格、換行符、換頁符、同車符、水平制表符) ,相當千[\f\n\r\t] | |
| \S | 任意一個非空白字符 | |
| \w | 任意一個單詞字符,相當于[a-zA-Z0-9] | |
| \W | 任意一個非單詞字符 | |
| () | 1.改變限定符的作用范圍;2.分組 | |
| 反向引用 | 依靠式子的記憶功能來匹配連續出現的字符串 | (if)(we)\1\2:匹配字符串ifweifwe |
4.2 函數
-
preg_grep(string pattern, array input )
<?php$preg = '/\w{7,}@\w{2,}\.com/';$ary = array('scgg@163.com','1859663@qq.com','your6666@aliyun.com');$preg_array = preg_grep($preg, $ary);var_dump($preg_array); ?>結果:
array(2) { [1]=> string(14) “1859663@qq.com” [2]=> string(19) “your6666@aliyun.com” }
注意:正則表達式前后要加’/'
-
preg_match()和preg_match_all()函數
**int preg_match/preg_match_all(string pattern, string subject [, array matches]) **
函數preg_match()的返回值是0或1, 因為該函數在匹配成功后就停止繼續查找了。而preg_match_all()函數則會一直匹配到最后才停止。參數matches是將匹配到的字符存儲在該數組里。
例子:
<?php$str = 'This is an example!';$preg = '/\b\w{2}\b/';$num1 = preg_match($preg, $str, $str1);echo $num1.'<br>';var_dump($str1);$num2 = preg_match_all($preg, $str, $str2);echo '<p>'.$num2.'<br>';var_dump($str2); ?>結果:
1
array(1) { [0]=> string(2) “is” }2
array(1) { [0]=> array(2) { [0]=> string(2) “is” [1]=> string(2) “an” } } -
string preg_quote (string str [, string delimiter])
將str里的特殊字符進行轉義,如果有參數delimiter,那么str里也會將該參數轉義。該函數返回轉義后的字符串。
-
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
該函數在字符串subject中匹配表達式pattern, 并將匹配項替換成字串replacement。 如 果有參數limit, 則替換limit次。
-
mixed preg_replace_callback (mixed pattern, callback callback, mixed subject[, int limit])
preg_replace_ callback()函數與preg_replace()函數的功能相同,都用于查找和替換字串 。不同的是,preg_replace _ callback()函數使用一個回調函數(callback)來代替replacement參數。
-
array preg_split (string pattern, string subject [, int limit])
使用表達式pattern來分割字符串subject。
第五章:數組
5.1 數組的類型
5.1.1 數字索引數組
數組的鍵值為數字
5.1.2 關聯數組
鍵值為字符串:
姓名為Jack,年齡為22,身高為185 20<?php$newAry = array('name'=>'Jack', 'age'=>'22', 'height'=>'185');echo '姓名為'.$newAry['name'].',年齡為'.$newAry['age'].',身高為'.$newAry['height'].'<br>';$newAry['age'] = '20';echo $newAry['age']; ?>結果為:
姓名為Jack,年齡為22,身高為185
20
5.2 輸出數組
使用**print_r( expression )**函數:
如果該函數的參數expression為普通的整型、 字符型或實型變量, 則輸出該變量本身。 如果該參數為數組, 則按一定鍵值和元素的順序顯示出該數組中的所有元素。
5.3 二維數組
<?php$new = array(0=>array('數學','英語'),'girl'=>array('one'=>'劉亦菲','third'=>'趙麗穎'));echo $new[0][1].'<br>';print_r($new['girl']['one']);echo '<br>';print_r($new); ?>結果:
英語
劉亦菲
Array ( [0] => Array ( [0] => 數學 [1] => 英語 ) [girl] => Array ( [one] => 劉亦菲 [third] => 趙麗穎 ) )
5.4 遍歷數組
5.4.1 foreach遍歷
<?php//一維數組遍歷$str = array('1','2','3');foreach($str as $value){echo $value.';';}echo '<br>';//二維數組遍歷$new = array(0=>array('數學','英語'),'girl'=>array('one'=>'劉亦菲','third'=>'趙麗穎'));foreach($new as $value){foreach($value as $val){echo $val.';';}} ?>結果:
1;2;3;
數學;英語;劉亦菲;趙麗穎;
5.4.2 list函數遍歷
<?php$my_array = array("Dog","Cat","Horse");list($a, $b, $c) = $my_array;echo "I have several animals, a $a, a $b and a $c."; ?>結果:
I have several animals, a Dog, a Cat and a Horse.
5.5 字符串與數組的轉換
5.5.1 字符串轉數組
<?php$str = '皮卡丘,杰尼龜,比雕';$ary = explode(',',$str);print_r($ary); ?>結果:
Array ( [0] => 皮卡丘 [1] => 杰尼龜 [2] => 比雕 )
5.5.2 數組轉字符串
<?php$str = '皮卡丘,杰尼龜,比雕';$ary = explode(',',$str);print_r($ary);echo '<br>';$str = implode('、',$ary);print_r($str); ?>結果:
Array ( [0] => 皮卡丘 [1] => 杰尼龜 [2] => 比雕 )
皮卡丘、杰尼龜、比雕
5.6 統計數組元素個數
int count (mixed array [, int mode])
| array | 數組 |
| mode | 默認為0,使用默認值時只能遍歷一維數組。設置為COUNT_RECURSIVE (或 1)時,能遍歷多維數組 |
結果:
5
2
7
###5.7 查詢數組中指定元素
mixed array_search ( mixed needle, array haystack [, bool strict])
其中, needle 指定在數組中搜索的值; haystack 指定被搜索的數組; strict 為可選參數, 如果值為 true, 還將在數組中檢查給定值的類型。
5.8 獲取數組中最后一個元素
函數:array_pop( array )
array _pop()函數獲取并返回數組的最后一個元素, 并將數組的長度減1,如果數組為空(或者不是數組)將返回null。
5.9 向數組中添加元素
int array_push (array array, mixed var[, mixed … ])
array_push()函數將數組當成一個棧, 將傳入的變量壓入該數組的末尾, 該數組的長度將增加入棧變量的數目, 返回數組新的元素總數。
<?php$new = array('1','2','3');$num = array_push($new, '4','5', '6');echo $num.'<br>';print_r($new); ?>結果:
6
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
5.10 刪除數組中重復的元素
array array_unique (array array)
array_unique()函數用于將值作為字符串排序,然后對每個值只保留第一個鍵名,忽略所有后面的鍵名, 即刪除數組中重復的元素。
第六章:PHP與Web頁面交互
6.1 表單
6.1.1 form標簽屬性
| name | 表單名稱 |
| method | 表單的提交方式(GET或POST) |
| action | 指向處理該表單頁面的URL(相對位置或絕對位置) |
| enctype | 設置表單內容的編碼方式 |
| target | 設置返回信息的顯示方式 |
| _blank | 將返回信息顯示在新的窗口 |
| _parent | 將返回信息顯示在父級窗口 |
| _self | 將返回信息顯示在當前窗口 |
| _top | 將返回信息顯示在頂級窗口 |
6.1.2 其它
關于表單的其他內容請自行尋找
6.2 PHP參數傳遞的常用方法
6.2.1 $_POST[]和$_GET[]全局變量
<?php$user = $_POST["user"]; //獲取名為user的文本框的內容$user = $_GET["user"]; ?>6.2.2 $_SESSION[]變量
<?php$user = $_SESSION["user"]; ?>使用$_SESSION[]傳參的方法獲取的變量值,保存之后任何頁面都可以使用,但這種方法很耗費系統資源,建議讀者慎重使用。
6.2.3 獲取參數值
例子:
<html><head><meta charset="utf-8"><title>TEST</title></head><body><form method="post">性別:<input type = 'radio' value = '男' name = 'sex' checked />男<input type = 'radio' value = '女' name = 'sex' />女<input type="submit" name="submit" value="提交" /></form><?phpif(isset($_POST['sex'])){echo '你的性別為:'.$_POST['sex'];}?></body> </html>結果:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-dLDEaMJh-1587956186477)(D:\Typora\保存\php\圖片\1.png)]
點擊"提交"后:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-W5g3JbXm-1587956186488)(D:\Typora\保存\php\圖片\2.png)]
第七章:PHP與JavaScript交互
7.1 JavaScript基礎
-
數據類型
數據類型說明 字符串型 單個或多個字符 數值型 整數或浮點數 布爾型 true或false 對象型 對象 Null值 可以給變量賦null值來清除變量內容 Undefined 表示該變量尚未被賦值 -
變量聲明與賦值
var i, j; //變量聲明 var i=1; j=100; //賦值 -
注釋
單行注釋://
多行注釋:/* */
-
函數
function 函數名 (參數) { 函數體; }
例:
<script language="javascript">function cheng(a, b){return a*b;}document.write(cheng(5,10)); </script> -
條件語句
var form=99; if (form<60){alert("不及格");} else if(form>=60&&form<=89){alert("良好");} else{alert("優秀");} -
循環
var number = 100; while(number--){document.write(number);} for(var i=1;i<100;i++){document.write(i);}
其它請參考菜鳥教程:JavaScript
第八章:PHP與MySQL
8.1 操作MySQL數據庫
8.1.1 連接
函數:mysqli_connect(sever, username, password, dbname, port, socket)
| sever | MySQL服務器地址(IP地址) |
| username | 用戶名 |
| password | 密碼 |
| dbname | 連接的數據庫名稱 |
| port | MySQL服務器使用的端口號 |
| socket | Unix域socket |
使用mysqli_connect函數,如果連接成功返回一個mysql連接標識,否則返回false。
8.1.2 選擇數據庫
-
方式一
$con = mysqli_connect('127.0.0.1','root','root','dbname'); -
方式二
$con = mysqli_connect('127.0.0.1','root','root'); if($con) {mysqli_select_db($con, 'dbname'); }
8.1.3 執行SQL語句
mysqli_query(link, query[, resultmode])
| link | mysql連接 |
| query | sql語句 |
| resultmode | 可選。一個常量。可以是下列值中的任意一個: MYSQLI_USE_RESULT(如果需要檢索大量數據,請使用這個,mysqli_free_result()函數可以釋放內存,兩者配合使用)、MYSQLI_STORE_RESULT(默認) |
查詢結果集請參考:函數大全
8.1.4 釋放內存
$result = mysqli_query($connect, "select * from ……"); mysqli_free_result($result);8.1.5 關閉連接
mysqli_close($connect)
ort, socket)**
| sever | MySQL服務器地址(IP地址) |
| username | 用戶名 |
| password | 密碼 |
| dbname | 連接的數據庫名稱 |
| port | MySQL服務器使用的端口號 |
| socket | Unix域socket |
使用mysqli_connect函數,如果連接成功返回一個mysql連接標識,否則返回false。
8.1.2 選擇數據庫
-
方式一
$con = mysqli_connect('127.0.0.1','root','root','dbname'); -
方式二
$con = mysqli_connect('127.0.0.1','root','root'); if($con) {mysqli_select_db($con, 'dbname'); }
8.1.3 執行SQL語句
mysqli_query(link, query[, resultmode])
| link | mysql連接 |
| query | sql語句 |
| resultmode | 可選。一個常量。可以是下列值中的任意一個: MYSQLI_USE_RESULT(如果需要檢索大量數據,請使用這個,mysqli_free_result()函數可以釋放內存,兩者配合使用)、MYSQLI_STORE_RESULT(默認) |
查詢結果集請參考:函數大全
8.1.4 釋放內存
$result = mysqli_query($connect, "select * from ……"); mysqli_free_result($result);8.1.5 關閉連接
mysqli_close($connect)
總結
- 上一篇: 初识IL2CPP
- 下一篇: 动态规划算法php,php算法学习之动态