想學(xué)習(xí)php的,不如來(lái)這里看看

php語(yǔ)言圖片

基本命令

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)有定義或者為null

  • 7.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ū)別

    1. include(),括號(hào)里面是另一個(gè)文件的名字,但還要注意文件的路徑問(wèn)題,當(dāng)然同目錄下的文件包含,路徑問(wèn)題不用管
    1. 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à)圖位置,橢圓的寬高
    • 4.輸出或保存最終圖像
      header("content-type:image/png");
      imagepng($im);以png格式輸出,如果想保存圖片,需加一個(gè)參數(shù),里面寫(xiě)上圖片的名稱(chēng),注意格式
    • 5.釋放畫(huà)布資源
      imagedestroy($im);
  • 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.查看表
      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
  • 39.查看服務(wù)器端的基本信息用\s查看
    四種字符集:
    服務(wù)器字符集
    Server characterset: utf8
    數(shù)據(jù)庫(kù)字符集
    Db characterset:utf8
    客戶(hù)端字符集
    Client characterset: utf8
    客戶(hù)端的連接字符集
    Conn. characterset: utf8

    show 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);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、php可以做什么 php是一種可以在服務(wù)器端運(yùn)行的編程語(yǔ)言,可以運(yùn)行在Web服務(wù)器端。 php是一門(mén)后臺(tái)編程語(yǔ)...
    空谷悠閱讀 3,142評(píng)論 4 97
  • PHP 學(xué)習(xí)目錄 ├─PHP視頻教程 1 LAMP網(wǎng)站構(gòu)建 │ ├─PHP教程 1.1.1 新版視頻形式介紹│ ...
    曹淵說(shuō)創(chuàng)業(yè)閱讀 16,186評(píng)論 29 417
  • 我害怕時(shí)光里的山南水北 害怕你我之間的人潮擁擠 更怕你在心動(dòng)的瞬間 早已無(wú)心堅(jiān)定下去 我不曾停止的 狂奔的 念頭 ...
    HimmyHimmy閱讀 283評(píng)論 0 1
  • 有的時(shí)候我真的很羨慕雯,她可以為了一個(gè)心儀的男同學(xué)從160斤瘦到96斤。有170cm高的身材一下子凸凹有致起來(lái)。 ...
    若熙卿毓閱讀 314評(píng)論 0 0
  • M012 43/70 冥想5分鐘(晚21:16~21:21) 匆忙中結(jié)束一天的工作,到家已是晚八點(diǎn),慢慢地細(xì)嚼下幾...
    a4ba0928273c閱讀 255評(píng)論 0 0