基本命令
win+R打開(kāi)命令行,cmd進(jìn)DOS窗口
DOS命令開(kāi)啟關(guān)閉Apache和Mysql
Apache啟動(dòng)關(guān)閉命令
httpd -k stop
httpd -k start
httpd -k restart
Mysql啟動(dòng)關(guān)閉命令
net stop mysql
net stop mysql
Apache默認(rèn)首頁(yè)
index.php index.html index.htm //優(yōu)先級(jí)從左到右
在httpd.conf文件里面有優(yōu)先級(jí)的定義
php語(yǔ)言的簡(jiǎn)單介紹
php不是強(qiáng)類(lèi)型語(yǔ)言,是弱類(lèi)型語(yǔ)言(解析型語(yǔ)言),不需要提前聲明,由程序自己判斷,和強(qiáng)類(lèi)型語(yǔ)言不同,不需要編譯后再使用,apache可以調(diào)用php解析器直接解析php代碼,html中直接嵌套php代碼,當(dāng)前要是在php文件中
基本知識(shí)
php中變量名區(qū)分大小寫(xiě),函數(shù)名和類(lèi)名不區(qū)分大小寫(xiě),所以干脆變量名和函數(shù)名全小寫(xiě)
utf-8編碼時(shí),一個(gè)中文三個(gè)字符
gbk編碼時(shí),一個(gè)中文兩個(gè)字符
變量輸出
echo $name;//輸出變量
var_dump($name);//輸出數(shù)組,并且打印類(lèi)型和長(zhǎng)度
print_r($name);//輸出數(shù)組,但不打印類(lèi)型和長(zhǎng)度
-
1.定義普通變量
$name = "小明";
-
2.可變變量
$str = "name"; $$str = "小紅";//等價(jià)于$name = "小紅";
-
3.變量引用
$a = $b 是把$b的值賦給$a $a = &$b 是把$b家的地址給$a
4.輸出
echo輸出一個(gè)布爾類(lèi)型時(shí),true會(huì)變成1,false會(huì)變成空5.資源
連接數(shù)據(jù)庫(kù)資源$conn = mysql_connect("主機(jī)名","用戶(hù)名","密碼");
文件打開(kāi)資源
目錄打開(kāi)資源
基本函數(shù)
6.isset函數(shù)
判斷變量是否存在,沒(méi)有定義或者為null7.empty函數(shù)
判斷變量是否為空,0 "" "0" false array() null 沒(méi)有定義 這7種都為空的情況8.變量類(lèi)型測(cè)試函數(shù)
整型 is_int();
浮點(diǎn)型 is_float();
字符型 is_string();
布爾型 is_bool();
數(shù)組 is_array();
對(duì)象 is_object();
資源 is_resource();
null類(lèi)型 is_null();
變量類(lèi)型
標(biāo)量類(lèi)型 整型 浮點(diǎn)型 字符型 布爾型
復(fù)合類(lèi)型 數(shù)組 對(duì)象
特殊類(lèi)型 資源 null類(lèi)型
is_scalar() 測(cè)試是否是標(biāo)量
is_numeric 測(cè)試是否是數(shù)字 整型 浮點(diǎn)型
is_callable() 測(cè)試是否是函數(shù),語(yǔ)言結(jié)構(gòu)則會(huì)返回false
- 9.語(yǔ)言結(jié)構(gòu)
echo()不是函數(shù),雖然后面也可以加括號(hào),和函數(shù)類(lèi)似
print()也是語(yǔ)言結(jié)構(gòu),而printf是函數(shù)
array()也是語(yǔ)言結(jié)構(gòu)
list()也是語(yǔ)言結(jié)構(gòu)
- 10.類(lèi)型轉(zhuǎn)換
只針對(duì)標(biāo)量
自動(dòng)轉(zhuǎn)換 和C語(yǔ)言類(lèi)似
整形 -> 字符串 3 -> "3"
$num = 123;
echo $num."abc";
字符型 -> 整型 "3" ->3
$str = "123";
echo $str + 1;
其他類(lèi)型 -> 布爾類(lèi)型 和empty()函數(shù)里面為空的情況一樣
$num = 0;//會(huì)轉(zhuǎn)成bool類(lèi)型的假false
if($num){
//如果為真則執(zhí)行
}
else{
}
強(qiáng)制類(lèi)型轉(zhuǎn)換 和C語(yǔ)言一樣
(類(lèi)型名)變量 例如(float)$num
11.刪除變量
unset($name);括號(hào)里面是變量名
-
12.字符串的單雙引號(hào)區(qū)別
- 單引號(hào)的執(zhí)行速度比雙引號(hào)速度快,雙引號(hào)在輸出時(shí)還要檢查走過(guò)的是否是變量
- 變量在單引號(hào)中不能被解析,而在雙引號(hào)中可以被解析
- 如果字符串中沒(méi)有變量就用單引號(hào),如果字符串中有變量就用雙引號(hào)
php中的常量
- 13.常量的定義
和變量一樣,但是一旦被定義就不能被修改,常量名最好大寫(xiě)便于區(qū)分,類(lèi)似于C語(yǔ)言的宏定義
例如:
define("HOST","localhost");
define("USER","root");
define("PASS","123");
define("DBNAME","test");
數(shù)據(jù)庫(kù)的配置文件就要用到常量,而且后面不能被修改
常量不能被放到雙引號(hào)里面或者花括號(hào)里面,要用.來(lái)連接常量
- 14.預(yù)定義常量
PHP_OS 系統(tǒng)平臺(tái)
PHP_VERSION php當(dāng)前的版本
__LINE__ 該行代碼在第幾個(gè)行
__FILE__ 文件的絕對(duì)路徑
__FUNCTION__ 函數(shù)的名字
M_PI 圓周率
-
15.運(yùn)算符 (文件名不要出現(xiàn)中文,否則可能會(huì)有錯(cuò)誤)
@運(yùn)算符 屏蔽函數(shù)的錯(cuò)誤信息,做調(diào)試時(shí)使用
數(shù)組運(yùn)算符 =>- 索引數(shù)組
$arr = array("use1","use2","use3");
echo $arr[1];
- 關(guān)聯(lián)數(shù)組
$arr = array("name"=>"user","age"=>"30");
echo "<pre>";
print_r($arr);
echo "</pre>";
對(duì)象運(yùn)算符 -> 對(duì)象使用
邏輯運(yùn)算符
開(kāi)關(guān)功能 && 如果前面為真,才會(huì)判斷后面的,和C語(yǔ)言一樣,面試會(huì)考,但沒(méi)有實(shí)際意義
- 16.date函數(shù)
date("Y-m-d");系統(tǒng)的年月日,Y,m,d的順序是可以換的哦
date("w");系統(tǒng)的周幾
- 17.表格的隔行換色代碼
header頭改編碼格式 utf-8,gbk
header("content-type:text/html;charset = utf-8");
<?php
$days = 31;
echo "<table width = '700px', border = '1px'>";
for($i = 1, $k = 1; $i <= $days;){
//在行產(chǎn)生的時(shí)候判斷行數(shù)來(lái)確定行的顏色
if($k % 2 == 1){
echo "<tr bgcolor = 'grey'>";
}
else{
echo "<tr style = 'background:blue'>";
}
//七天為一個(gè)周期
for($j = 0; $j < 7; $j++){
if($i > $days){
echo "<td> </td>";
}
else{
echo "<td>{$i}</td>";
}
$i++;
}
echo "</tr>";
$k++;
}
echo "</table>";
?>
- 18.終止腳本函數(shù)
exit();后面的()可以不用寫(xiě)
die();后面的()可以不用寫(xiě),并且可以在里面寫(xiě)上內(nèi)容
例如:die("腳本終止");
-
19.php的函數(shù)理解
php的函數(shù)可以傳值,也可以是帶有默認(rèn)函數(shù)參數(shù)的,這點(diǎn)和C++一樣
函數(shù)的輸出和返回,易錯(cuò)點(diǎn),返回值的函數(shù)較常用,然后想輸出的函數(shù)的結(jié)果時(shí)在輸出,而不用一調(diào)用函數(shù)就會(huì)把函數(shù)的結(jié)果打印在屏幕上
可變參數(shù)的函數(shù),C語(yǔ)言里也可以實(shí)現(xiàn),php是自身帶的函數(shù)來(lái)實(shí)現(xiàn),func_num_args()可以獲取當(dāng)前傳入函數(shù)的參數(shù)個(gè)數(shù),func_get_args()得到傳入的參數(shù)具體值,以數(shù)組的方式儲(chǔ)存,再用array_sum(func_get_args())就可以得到傳入的數(shù)據(jù)之和
變量函數(shù),把函數(shù)的名字賦給一個(gè)變量,就可以用變量來(lái)使用函數(shù)的功能,例如:$a = "sum",sum是一個(gè)函數(shù)的名字,echo $a(1, 2);類(lèi)似于C++的變量引用變量的作用域類(lèi)似于C語(yǔ)言,global關(guān)鍵字可以把函數(shù)內(nèi)的局部變量變成全局變量,但最好不要用,會(huì)干擾函數(shù)外的同名變量,如果想通過(guò)函數(shù)改變函數(shù)外部變量的值,可以使用函數(shù)參數(shù)的引用方式,這點(diǎn)和C++的方法一樣,實(shí)質(zhì)是先找到變量的地址,在修改地址里面的值
回調(diào)函數(shù),函數(shù)的參數(shù)是另一個(gè)函數(shù),或者說(shuō)是參數(shù)的一種
靜態(tài)變量和C語(yǔ)言的關(guān)鍵字一樣,static
文件包含
include()和require()的區(qū)別
- include(),括號(hào)里面是另一個(gè)文件的名字,但還要注意文件的路徑問(wèn)題,當(dāng)然同目錄下的文件包含,路徑問(wèn)題不用管
- require(),和include()的用法相同,但如果包含的文件找不到,就會(huì)終止php腳本,不會(huì)執(zhí)行下面的代碼(不管代碼正確與否),而在include中仍會(huì)執(zhí)行
20.php的執(zhí)行過(guò)程
加載頁(yè)面,語(yǔ)法檢測(cè)(加載函數(shù)),執(zhí)行腳本21.php數(shù)組
數(shù)組是由多個(gè)元素組成,每個(gè)元素由key-value,value有八種數(shù)據(jù)類(lèi)型
索引數(shù)組和關(guān)聯(lián)數(shù)組的混合使用,關(guān)聯(lián)數(shù)組的使用不影響索引數(shù)組的下標(biāo)
例如:$arr = array("name" => 1, 2, 3, 100 => 4, 5, "age" =>6)
,它們的下標(biāo)打印為"name", 0, 1, 100, 101,"age"
數(shù)組取值printf_r($arr);
數(shù)組賦值,$arr['age'] = 30
,數(shù)組賦值也可以定義數(shù)組,$arr[] = 1; $arr[] = 2;
這些內(nèi)容意義不大
三種方法來(lái)進(jìn)行數(shù)組遍歷
for循環(huán)來(lái)進(jìn)行帶數(shù)字索引數(shù)組遍歷,而foreach()可以遍歷一切數(shù)組,foreach($arr as $key => $val),as就是從$arr中取值$val,然后再在循環(huán)里面打印數(shù)組的值,關(guān)聯(lián)數(shù)組索引被稱(chēng)為鍵值對(duì),list和each遍歷數(shù)組,感覺(jué)麻煩,while(list($key,$val) = each($arr)){echo "<h1>{$key}:{$val}</h1>";
多維數(shù)組,數(shù)組里面套數(shù)組,例如二維數(shù)組:$arr = array(1, 2, array(4,5));
一張數(shù)據(jù)表其實(shí)就是一個(gè)二維數(shù)組,里面的每一行記錄就是一個(gè)一維數(shù)組
22.超全局?jǐn)?shù)組
$_SERVER 查看服務(wù)器信息,用print_r打印服務(wù)器相關(guān)信息,不要用echo
$_GET 獲取get提交過(guò)來(lái)的數(shù)據(jù),兩個(gè)頁(yè)面之間通訊,表單傳值(get方式,post方式),
a標(biāo)簽傳值(get傳值),get傳值的可以在地址上看到,不安全,
a標(biāo)簽推薦使用get提交數(shù)據(jù),表單推薦使用post處傳值方式,
而$_POST獲取表單post傳過(guò)來(lái)的數(shù)據(jù),$_REQUEST獲取a標(biāo)簽或者表單get或者post過(guò)來(lái)的數(shù)據(jù)
$_REQUEST 等于$_GET和$_POST
cookie和session前面不能有輸出
$_COOKIE 同一個(gè)變量在多個(gè)頁(yè)面獲取到
$_SESSION 同一個(gè)變量在多個(gè)頁(yè)面獲取到
$_FILES 獲取表單中的文件,并生成一個(gè)數(shù)組
$GLOBALS 里面包含頁(yè)面內(nèi)的全局變量,在函數(shù)里面改變一個(gè)外部變量的值,可以用$GLOBALS[$name] = "...";
- 23.數(shù)組函數(shù)
數(shù)組的鍵值操作函數(shù)
array_keys();獲取數(shù)組中的鍵,參數(shù)是數(shù)組名
array_vals();獲取數(shù)組中的值,參數(shù)是數(shù)組名
array_key_exists();檢查一個(gè)鍵是否在數(shù)組中
in_array();檢查一個(gè)值是否在數(shù)組中,里面的參數(shù)是"值"和數(shù)組名
array_flip();鍵和值對(duì)調(diào),參數(shù)是數(shù)組名
array_reverse();數(shù)組中的值反轉(zhuǎn),也就是函數(shù)返回一個(gè)和原來(lái)數(shù)組順序相反的數(shù)組
統(tǒng)計(jì)數(shù)組的元素和唯一性
count();統(tǒng)計(jì)數(shù)組元素個(gè)數(shù)
array_count_values();統(tǒng)計(jì)數(shù)組中相同值的個(gè)數(shù),并返回一個(gè)新的數(shù)組
array_unique();刪除數(shù)組中重復(fù)的值
使用回調(diào)函數(shù)處理數(shù)組的函數(shù)(過(guò)濾)
array_filter();數(shù)組值過(guò)濾,篩選出符合條件的值,參數(shù)是數(shù)組名和條件
array_map();將回調(diào)函數(shù)作用到給定數(shù)組的元素上,參數(shù)是函數(shù)和數(shù)組,返回一個(gè)新數(shù)組
數(shù)組的排序函數(shù)
sort();升序排列,不保留key
rsort();降序排列,不保留key
asort();保留key升序排列
arsort();保留key降序排列
ksort();根據(jù)值對(duì)key升序排列,排列后key和value互換
krsort();根據(jù)值對(duì)key降序排列,排列后key和value互換
natsort();用自然排序算法升序排列,如果想降序排列,可以再使用array_reverse()函數(shù)倒轉(zhuǎn)
natcasesort();忽略大小寫(xiě)升序排列
array_multisort();多個(gè)數(shù)組進(jìn)行排序
拆分、合并、分解與結(jié)合函數(shù)
explode();拆分函數(shù),例如:explode("-",$arr);
join();//implode();都是合并函數(shù)
array_slice();
參數(shù)是變量名,起始標(biāo)量,終止標(biāo)量,例如:``array($arr, 0, 3);```正數(shù)是從左到右截取,負(fù)數(shù)是從右到左截取,變成一個(gè)數(shù)組,而原來(lái)的數(shù)組不變
array_splice();
用法和array_slice類(lèi)似,不一樣的是它不但產(chǎn)生一個(gè)新數(shù)組,還會(huì)把原數(shù)組變成截取后剩下的部分,更厲害的是它還可以在原數(shù)組裁剪的地方添加元素,例如array_splice($arr, 0, 3, array("ff", "gg", "hh"));
所添加的元素會(huì)放到原數(shù)組的被裁剪的地方
array_merge($a, $b);合并兩個(gè)數(shù)組變成一個(gè)數(shù)組
array_combine($a, $b);和并聯(lián)個(gè)數(shù)組使前面的數(shù)組變成后面數(shù)組的下標(biāo)
array_intersect();取兩個(gè)數(shù)組的交集
array_diff();前面的作為參照物,取后面數(shù)組中的和前面不一樣的元素,求差集
數(shù)組與數(shù)據(jù)結(jié)構(gòu)
array_pop()彈出數(shù)組的最后一個(gè)元素,改變?cè)瓟?shù)組,并返回一個(gè)新數(shù)組,和unset()不一樣
array_push();返回新數(shù)組的元素個(gè)數(shù),改變?cè)瓟?shù)組
array_shift();在數(shù)組最前面彈出一個(gè)值,返回移出值,原數(shù)組下標(biāo)重排
array_unshift();在數(shù)組前面插入一個(gè)值,返回?cái)?shù)組個(gè)數(shù)
其他有用的數(shù)組處理函數(shù)
array_rand();隨機(jī)取一個(gè)key
shuffle();打亂一個(gè)數(shù)組
array_sum;求數(shù)組所有值的和
range();獲取一個(gè)范圍內(nèi)的數(shù)組,兩個(gè)參數(shù),可以做驗(yàn)證碼
- 24.字符串
- echo和print的區(qū)別,echo可以連接多個(gè)字符串,例如:echo "aaa","bbb","cccc";而print不能
- printf可以格式化輸出,和C語(yǔ)言一樣,有格式說(shuō)明符%s,$d
- sprintf也可以格式化,但不直接輸出,而是返回一個(gè)字符串
用點(diǎn).來(lái)連接字符串
字符串函數(shù)
去除空格和字符串填補(bǔ)的函數(shù)(解決用戶(hù)名因多敲了空格而造成不能登錄)
ltrim();去除字符串左邊的空格
rtrim();去除字符串右邊的空格
trim();去除字符串左右兩邊的空格
str_pad();填充字符串的長(zhǎng)度,使用另一個(gè)字符串填充字符串為指定長(zhǎng)度,
例如echo str_pad($str, "-", (STR_PAD_LEFT));最后一個(gè)參數(shù)可寫(xiě)可不寫(xiě)
str_repeat(); 將一個(gè)字符串重復(fù)多少次,例如echo str_repeat("_",3),輸出 ___
strlen();獲取字符串長(zhǎng)度
字符串大小寫(xiě)轉(zhuǎn)換函數(shù)
strtoupper();
strtolower();
ucfirst();字符串的首字母大寫(xiě)
ucwords();字符串的每一個(gè)單詞的首字母都大寫(xiě)
與html相關(guān)聯(lián)的字符串函數(shù)(結(jié)合著數(shù)據(jù)庫(kù)來(lái)看)
nl2br();把\n轉(zhuǎn)成br標(biāo)簽,例如echo nl2br("aaaa\nbbb\ccc");和其他語(yǔ)言交互的時(shí)候使用可以換行
htmlspecialchars();轉(zhuǎn)實(shí)體,轉(zhuǎn)“、< > &”,對(duì)于惡意輸入,原樣輸出
strip_tags();去掉html標(biāo)簽,也可以保留一部分,在參數(shù)后面加上所要保留的標(biāo)簽,記著加雙引號(hào)
addslashes();轉(zhuǎn)義' " \ ,在它們前面加上\,和C語(yǔ)言的轉(zhuǎn)義字符一樣,默認(rèn)php開(kāi)啟
stripslashes();去掉addslashes默認(rèn)加的\
字符串比較函數(shù)(ASCII碼)
1.按字節(jié)進(jìn)行字符串的比較
strcmp($str1, $str2);比較字符串的每個(gè)字節(jié)
strcasecmp();忽略大小寫(xiě)比較字符串的每個(gè)字節(jié)
2.按自然排序時(shí)字符串的比較
strnatcmp();按自然排序比較字符串中的數(shù)字
strnatcasecmp();按自然排序忽略比較字符串中的數(shù)字
字符串的分割與拼接(和前面數(shù)組部分一樣)
1.分割 explode();把字符串分割成數(shù)組
2.拼接implode()(join());把字符串拼接成字符串
字符串的截取
substr();參數(shù)為變量名,起始位置坐標(biāo)(從0開(kāi)始),終止位置坐標(biāo)。
需要注意編碼問(wèn)題,可以統(tǒng)一字符編碼,
例如:(這個(gè)是支持多字節(jié)的)echo mb_substr($str, 0, 6,"utf-8"),
不管是中文字符還是英文的字符,都會(huì)截取前6個(gè)
查詢(xún)字符串
1.strstr();查找指定字符在字符串中的第一次出現(xiàn),返回一個(gè)字符串,但不夠精確
2.strrchr();查找指定字符在字符串中的最后一次出現(xiàn)
3.strpos();查找指定字符在字符串第一次出現(xiàn)的位置
4.strrpos($str, 'w');w在$str中最后一次出現(xiàn)的位置
字符串替換
1.str_replace();參數(shù)是兩個(gè)字符串和一個(gè)字符串名字,后面的替換前面的,但是想替換多個(gè)不同的字符串,
可以把它們放在一個(gè)數(shù)組中,然后用數(shù)組作為第一個(gè)參數(shù),就可以實(shí)現(xiàn)多個(gè)替換了,
并且還可以實(shí)現(xiàn)多個(gè)替換多個(gè),就是把第二個(gè)參數(shù)也變成數(shù)組,兩個(gè)數(shù)組對(duì)應(yīng)替換
字符串拆分常用函數(shù)
1.pathinfo($str);
2.parse_url($str);專(zhuān)門(mén)針對(duì)url地址拆分
3.parse_str($str['query'], $arr);拆分更具體
4.preg_split('/ /',$srr['']);正則拆分
其他字符串函數(shù)
strrev();字符串翻轉(zhuǎn)
strlen();字符串長(zhǎng)度
number_format();格式化數(shù)字字符串,每三個(gè)字符加一個(gè)(,),
還可以選擇保留幾位小數(shù),可以按照自己的要求格式化
md5();md5加密后的字符串,加密后是一個(gè)32位字符串
str_shuffle();隨機(jī)輸出字符串,和數(shù)組里面的shuffle一樣
- 25.建議在數(shù)據(jù)插入數(shù)據(jù)庫(kù)之前進(jìn)行三道把控
1.[b]aaaaaa[/b] UBB代碼,使用strip_tags過(guò)濾一部分html標(biāo)簽
2.addslashes()
' " \ 前加上\,防止對(duì)數(shù)據(jù)庫(kù)造成破壞
3.htmlspecialchars()
將' " < > & 轉(zhuǎn)成實(shí)體,防止對(duì)數(shù)據(jù)庫(kù)造成破壞
-
26.正則表達(dá)式
正則表達(dá)式是用于描述字符排列和匹配模式的一種語(yǔ)法規(guī)則,它主要用于字符串的模式分割,匹配,查找及替換操作,在PHP中正則表達(dá)式一般是由正規(guī)字符和一些特殊字符聯(lián)合構(gòu)成的一個(gè)文本模式的程序性描述,本次采用perl兼容的正則表達(dá)式1.原子
.(點(diǎn)) 代表任意一個(gè)字符,但不能匹配換行符\n
\w 代表任意一個(gè)字母、數(shù)字、下劃線
\W 除了字母、數(shù)字、下劃線以外的任意一個(gè)字符
\d 代表任意一個(gè)數(shù)字
\D 代表任意一個(gè)非數(shù)字
\s 匹配空白字符、空格、tab
\S 除了空白字符、空格、tab
. 轉(zhuǎn)義字符,代表一個(gè)普通字符 .(點(diǎn))
[abc] 它里面的任意一個(gè)字符
[^abc] 它里面除了abc的任意一個(gè)
() 單元2.元子符
*(星號(hào)) 0個(gè)、一個(gè)、多個(gè) 修飾前面任意多個(gè)原子
+(加號(hào)) 一個(gè)、多個(gè),至少有一個(gè)
?(問(wèn)號(hào)) 0個(gè)、多個(gè),可有可無(wú)的,一般和單元結(jié)合使用
| 或
^ 以什么開(kāi)頭的
$ 以什么結(jié)尾的
\b 詞邊緣
\B 非詞邊緣
{2} 2個(gè)原子
{2,} 2個(gè)前面的原子
{2,5} 2-5個(gè)前面的原子3.模式修正符
/正則表達(dá)式/U
i, m, s, U, e
i 忽略大小寫(xiě)
m 視為多行
s 視為一行
U 貪婪模式,最大化細(xì)致匹配模式
e 替換的時(shí)候用的,可以用函數(shù)加工向后4.例子
$str = "LINUX and php are lamp or linux is good";
$ptn = '/linux/i';//匹配出字符串中的linux
preg_match_all($ptn, $str, $arr);
echo "<pre>";
print_r($arr);//可以匹配出LINUX和linux
echo "</pre>";
eval讓字符串表達(dá)式可以執(zhí)行
27.正則表達(dá)式函數(shù)
字符串的匹配與查找
1.preg_match();正則表達(dá)式匹配
2.preg_match_all();正則表達(dá)式全匹配
3.preg_grep();可以做搜索
字符串替換
4.preg_replace();正則表達(dá)式替換
字符串分割
5.preg_split(); 正則表達(dá)式分割
- 28.數(shù)學(xué)函數(shù)
注: 參數(shù)有兩種,1.多個(gè)數(shù)字,2.多個(gè)數(shù)字組成的數(shù)組
1.max(10,5,8);取最大值
2.min();取最小值
3.mt_rand();隨機(jī)去一個(gè)值,參數(shù)是一個(gè)范圍
4.ceil();距該數(shù)的上一個(gè)整數(shù),不是四舍五入
5.floor();距該數(shù)的下一個(gè)整數(shù)
6.pi();取圓周率函數(shù)
7.round();四舍五入函數(shù)
- 29.日期函數(shù)
- 1.time();當(dāng)前的時(shí)間戳,也即離1970年1月1日0點(diǎn)0分0秒C語(yǔ)言和unix誕生的起源時(shí)間,32位機(jī)器在2038年會(huì)出現(xiàn)時(shí)間溢出
- 2.date("Y-m-d H:i:s");
參數(shù)有Y(2016年)y(16)m(09月)n(9月,不帶零) d(05日)j(5日,不帶零)
H:24小時(shí)制的 h:12小時(shí)制的 i:00-59分 s:00-59秒
w(0-6 周日-周六)t(31)一個(gè)月多少天 L是否為閏年
A:AM或PM a:am或pm
年月日,時(shí)分秒,小y代表年的后兩位,有時(shí)區(qū)規(guī)則 - 3.strtotime();將字符串日期轉(zhuǎn)成時(shí)間戳,可以是未來(lái)的時(shí)間也可以是過(guò)去的時(shí)間,如2016/9/11或者2015-3-4
- 4.microtime(); 1秒=1000毫秒=1000000微秒
要想將兩個(gè)時(shí)間進(jìn)行數(shù)學(xué)運(yùn)算,需要傳給microtime里面的參數(shù)為1 - 5.sleep(1)耽擱一秒鐘
與時(shí)區(qū)有關(guān)的函數(shù)
1.date_default_timezone_set("時(shí)區(qū)名字縮寫(xiě)");中國(guó)的縮寫(xiě)是PRC
2.date_default_timezone_get();默認(rèn)的時(shí)區(qū),這個(gè)和PHP的配置文件有關(guān),
在php.ini里面可以修改默認(rèn)的時(shí)區(qū),這樣就不用設(shè)置默認(rèn)的時(shí)間了
3.date_timezone_set();
4.date_timezone_get();
-
30.php的錯(cuò)誤處理
1.關(guān)閉和開(kāi)啟報(bào)錯(cuò)
display_errors = On
display_errors = Off(不建議使用)2.報(bào)錯(cuò)級(jí)別
E_ALL 所有以下錯(cuò)誤
E_NOTICE 提示錯(cuò)誤,腳本不終止
E_WARNING 警告錯(cuò)誤,腳本不終止
E_ERROR 嚴(yán)重錯(cuò)誤,腳本終止
E_PARSE 語(yǔ)法錯(cuò)誤,腳本終止3.控制報(bào)錯(cuò)級(jí)別
error_reporting = E_ALL
E_ALL & ~E_NOTICE 報(bào)所有錯(cuò)誤,但是除了提示錯(cuò)誤4.報(bào)錯(cuò)地方
display_errors = Off//是否從瀏覽器輸出錯(cuò)誤
log_errors = On//是否把錯(cuò)誤輸出到一個(gè)自定義的日志文件中
修改存放文件的路徑
error_log = e:\phplogs\php.log
31.GD庫(kù)畫(huà)圖步驟
1.準(zhǔn)備畫(huà)布
2.準(zhǔn)備涂料
3.畫(huà)畫(huà)
4.輸出圖片
5.保存圖片
6.關(guān)閉畫(huà)布-
32.php圖片處理函數(shù)
- 1.適用場(chǎng)景
驗(yàn)證碼,縮放,裁剪,水印 - 2.圖片格式
jpeg(jpg)是一種普及率最高的圖片類(lèi)型,它使用的是有損壓縮格式
png是網(wǎng)絡(luò)上最常用的圖片類(lèi)型,它使用的時(shí)候無(wú)損壓縮格式
gif是網(wǎng)站上最常用的圖片類(lèi)型,它可以支持動(dòng)態(tài)圖片,它使用無(wú)損壓縮格式 - 3.創(chuàng)建圖像的五個(gè)步驟
- 1.準(zhǔn)備畫(huà)布資源(資源創(chuàng)建用完后要被釋放)
$im = imagecreatetruecolor();參數(shù)是畫(huà)布的大小 - 2.準(zhǔn)備涂料
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);參數(shù)是畫(huà)布和顏色(十進(jìn)制和十六進(jìn)制) - 3.在畫(huà)布上畫(huà)圖像或文字(畫(huà)布默認(rèn)填充就是黑色)
imagesetpixel();設(shè)置像素點(diǎn),再加上for循環(huán)做驗(yàn)證碼的干擾素
iamgeline();畫(huà)一條線,參數(shù)是坐標(biāo)起點(diǎn)的x,y,終點(diǎn)的x,y
imagerectangle();畫(huà)一個(gè)矩形,參數(shù)是坐標(biāo)起點(diǎn)的x,y,終點(diǎn)的x,y
imagefilledrectangle();畫(huà)一個(gè)矩形并填充
imagepolygon();畫(huà)一個(gè)多邊形,參數(shù)有數(shù)組,個(gè)數(shù),顏色
imagefilledpolygon();畫(huà)一個(gè)多邊形并填充
imagearc();畫(huà)一個(gè)圓弧
imagestring();水平畫(huà)一行字符串
imagestringup();垂直地畫(huà)一列字符串
imagechar();水平畫(huà)一個(gè)字符
imagecharup();垂直地畫(huà)一個(gè)字符
imagettftext();用truetype字符向圖像畫(huà)一個(gè)字符串
imagefill($im, 0, 0, $white);填充畫(huà)布,從什么位置以及顏色
imageellipse($im, 0, 0, 100,100);畫(huà)圓和橢圓,參數(shù)是畫(huà)布,畫(huà)圖位置,橢圓的寬高
- 1.準(zhǔn)備畫(huà)布資源(資源創(chuàng)建用完后要被釋放)
- 4.輸出或保存最終圖像
header("content-type:image/png");
imagepng($im);以png格式輸出,如果想保存圖片,需加一個(gè)參數(shù),里面寫(xiě)上圖片的名稱(chēng),注意格式 - 5.釋放畫(huà)布資源
imagedestroy($im);
- 1.適用場(chǎng)景
33.php跳轉(zhuǎn)設(shè)計(jì)
1.頁(yè)面跳轉(zhuǎn)
php方式的跳轉(zhuǎn)(header前面不能有輸出,不建議使用這種方式)
header("location:index.php");
js方式的跳轉(zhuǎn)(優(yōu)先使用此方式)
echo "<script>location = '地址'</script>";
echo "<script>location = 'index.php'</script>";-
34.圖片相關(guān)函數(shù)
1.獲取圖片的寬高
getimagesize();參數(shù)是文件名
imagesx();得到圖片的寬
imagesy();得到圖片的高2.已經(jīng)存在形成的畫(huà)布資源
imagecreatefromjpeg();打印出圖片3.圖片縮放函數(shù)(等比例問(wèn)題)
imagecopyresampled();4.圖片裁剪函數(shù)
imagecopyresampled();5.圖片水印函數(shù)
imagecopy();
-
35.文件處理
1.文件測(cè)試函數(shù)
filetype();文件目錄,參數(shù)是文件名,返回dir(文件夾)或者file(文件)
is_dir();判斷是否是目錄,返回布爾值
is_file();判斷是否是文件,返回布爾值
file_exists();文件或目錄是否存在,返回布爾值
filesize();文件大小或目錄大?。?kb)2.文件操作函數(shù)
fopen($filename,"w");參數(shù)是文件名和讀或?qū)懛绞?,和C語(yǔ)言文件操作一樣
文件打開(kāi)模式
r 只讀方式打開(kāi),將文件指針指向文件頭
r+ 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭,擦除以后寫(xiě)
w 寫(xiě)入方式打開(kāi),將文件指針指向文件頭并將文件大小截為零,如果文件不存在則嘗試先創(chuàng)建
w+ 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭并將文件大小截為零,且清空文件原有的內(nèi)容,如果文件不存在則嘗試先創(chuàng)建新文件
a 寫(xiě)入文件打開(kāi),將文件指針指向文件結(jié)尾,如果文件不存在則嘗試創(chuàng)建文件
a+ 讀寫(xiě)方式打開(kāi),將文件指針指向文件結(jié)尾,如果文件不存在則嘗試創(chuàng)建文件
fclose();關(guān)閉文件
unlink();文件刪除
copy();文件復(fù)制改變,參數(shù)是文件和新的文件路徑,并且可以修改文件名,剪切就是先復(fù)制后刪除原文件
rename();重命名文件名,參數(shù)是文件和新的文件名
fread();文件讀取,參數(shù)是文件資源和讀取長(zhǎng)度
file();不需要資源,把文件以數(shù)組返回
readfile();不需要資源
file_get_contents();讀取文件內(nèi)容不需要資源,可以以后再打印
寫(xiě)入文件內(nèi)容
file_put_contents();寫(xiě)入文件內(nèi)容不需要資源
移動(dòng)文件指針
ftell();告訴當(dāng)前位置
fseek();指針到指定位置
rewind();指針?lè)祷匚募_(kāi)頭
feof();判斷文件指針是否到了文件結(jié)束的位置3.目錄操作
mkdir();創(chuàng)建目錄(文件夾)
rmdir();刪除目錄,如果目錄里面有內(nèi)容則不能刪除4.與路徑有關(guān)的函數(shù)
basename();取路徑中最后的文件名
dirname();取路徑中除了最后文件名之外的路徑
realpath();里面的參數(shù)是.或者是.. .代表當(dāng)前目錄,..代表上一目錄,每個(gè)文件夾都有兩個(gè)隱藏的文件.和..,可以把相對(duì)地址轉(zhuǎn)絕對(duì)地址
FILE當(dāng)前文件地址超全局變量
DIRECTORY_SEPARATOR;目錄分割符,windows是,linux是/
PATH_SEPARATOR;命令分割符,windows是; linux是
pathinfo();文件的路徑信息,并將其存放在一個(gè)數(shù)組里面
parse_url();瀏覽器地址的路徑信息,并將其存放在一個(gè)數(shù)組里面
parse_str();
5.目錄大小
opendir(); readdir();打開(kāi)讀取文件夾
closedir();刪除目錄資源,然后在刪除目錄本身rmdir(); -
36.文件上傳
1.客戶(hù)端上傳設(shè)置
post方法
enctype = 'multipart/form-data'
max_file_size最大文件大小,在php.ini里面可以修改2.在服務(wù)器端通過(guò)php處理上傳
upload_max_filesize
input type = file 上傳框中文件的最大值
post_max_size
form表單的總大小,肯定要大小文件類(lèi)型上傳框的大小
$_FILE['myfile']['error']
0 表示沒(méi)有發(fā)生任何錯(cuò)誤
1 表示上傳文件的大小超過(guò)了約定值,約定值是upload的值,但不能超過(guò)post的值
2 表示上傳文件大小超過(guò)表單限制,是在表單<input type = "hidden" name = "MAX_FILE_SIZE" value = "10000">來(lái)設(shè)置
3 表示文件只被部分上傳
4 表示沒(méi)有上傳任何文件3.多文件上傳
使用for循環(huán)4.文件下載(下載文件前要知道文件類(lèi)型)
1.header("content-type:image/png");
2.header("content-disposition:attachment;filename=a.txt);
3.header("content-length:30KB");
4.readfile('a.txt');
-
37.mysql數(shù)據(jù)庫(kù)
數(shù)據(jù)表三部分組成
1.表結(jié)構(gòu) 列信息
2.表字段(數(shù)據(jù)) 行信息
3.表記錄 (索引) 把列中的行加到索引中(一般情況下一個(gè)表一定要把id這一列的所有數(shù)據(jù)都加到主鍵索引中)mysql基本命令
1.net stop mysql 關(guān)閉mysql
2.net start mysql 開(kāi)啟mysql
3.mysql -uroot -p123456
4.show databases;
5.use test切換test數(shù)據(jù)庫(kù)
6.show tables;查看所有表
7.select * from t1;查看t1表中所有數(shù)據(jù)
8.desc t1;查看t1表列結(jié)構(gòu)
9.exit 退出mysql客戶(hù)端
10.desc user 查看表記錄-
數(shù)據(jù)庫(kù)操作
- 1.創(chuàng)建數(shù)據(jù)庫(kù)
sql命令不區(qū)分大小寫(xiě),每一個(gè)數(shù)據(jù)庫(kù)會(huì)多一個(gè)文件夾,在window下數(shù)據(jù)庫(kù)名不區(qū)分大小寫(xiě),在linux下相反 - 2.查看數(shù)據(jù)庫(kù)
show databases; - 3.刪除數(shù)據(jù)庫(kù)
drop database t62; - 4.切換數(shù)據(jù)庫(kù)
use test;
- 1.創(chuàng)建數(shù)據(jù)庫(kù)
表操作
1.查看表
show tables;
2.創(chuàng)建表
mysql> create table user(
-> id int,
-> name varchar(30),
-> pass varchar(30)
-> );
3.修改表
rename table t1 to user;
4.刪除表
5.查看表字段
desc user;
6.查看表數(shù)據(jù)
select * from t1;//來(lái)自哪的表格
select id from t1;
7.查看表結(jié)構(gòu)
desc user;
-
38.數(shù)據(jù)庫(kù)設(shè)計(jì)
- 1.數(shù)值
//顯示和大小,這個(gè)顯示是沒(méi)有意義,除非你在左側(cè)一定要補(bǔ)0,本列得有zerofill屬性,而你這一列變成無(wú)符號(hào)
int //int(3)與長(zhǎng)度無(wú)關(guān),不夠3位時(shí)前面補(bǔ)0,默認(rèn)是看不見(jiàn)的
float - 2.字符串(顯示和個(gè)數(shù))
//名字:char varchar 標(biāo)題:varchar(30) 內(nèi)容:text類(lèi)型
char(n)速度更快,n長(zhǎng)度最大值255,占用n個(gè)字節(jié)
varchar(n)節(jié)省空間,存多少字節(jié)占多少字節(jié),儲(chǔ)存l+1
text 65535字節(jié)
longtext longtext 42億字節(jié) - 3.日期和時(shí)間
data
time
datatime
year
timestamp
//用整形的時(shí)間戳來(lái)替代日期類(lèi)型,在php中把time()時(shí)間戳存到mysql中的int列中,建議日期存整型 - 4.數(shù)據(jù)字段屬性
unsigned 無(wú)符號(hào),無(wú)負(fù)數(shù)
zerofill 零填充,int(3),不夠3位補(bǔ)零
auto_increment 自增,id使用
null 默認(rèn)屬性,這一列允許為null
not null 和下面的配合使用,改變屬性
default
- 1.數(shù)值
-
39.查看服務(wù)器端的基本信息用\s查看
四種字符集:
服務(wù)器字符集
Server characterset: utf8
數(shù)據(jù)庫(kù)字符集
Db characterset:utf8
客戶(hù)端字符集
Client characterset: utf8
客戶(hù)端的連接字符集
Conn. characterset: utf8show create database t1;查看數(shù)據(jù)庫(kù)t1被創(chuàng)建時(shí)的相關(guān)信息
查看數(shù)據(jù)庫(kù)字符集
show create database test;
查看表字符集
show create table user; 40.數(shù)據(jù)庫(kù)的增刪改查
//在mysql中沒(méi)有==,只有=,即包含賦值,又包含比較
增 insert
insert into t1(usename) valuse('f');
改 update
update t1 set username='g' where id=6;
一次性更改多個(gè)值,中間用逗號(hào),隔開(kāi)
update t1 set username='gg',id=66 where id=6;
刪 delete
//必須加where條件,如果不加where全部刪除,這個(gè)時(shí)候應(yīng)該用
delete from t1 where id=3;
delete from t1 where id>=3 and id<=5;
delete from t1 where id between 3 and 5;
delete from t1 where id=1 or id=3 or id=5;
delete from t1 where id in(1,3,5);