對(duì)象:至少有一種編程語(yǔ)言經(jīng)驗(yàn)者
目標(biāo):掃除你的畏懼,快速上手PHP
當(dāng)然你也可以直接看官方手冊(cè)
1.開(kāi)發(fā)工具
對(duì)于初學(xué)者最重要的就是能夠直接Coding,而且能看到運(yùn)行效果,因此使用PhpStorm會(huì)讓你感覺(jué)神清氣爽.
2.語(yǔ)法基礎(chǔ)
- 變量及操作符
- 變量類型包括:
Boolean(TRUE,FALSE)布爾類型
,integer整型
,Float浮點(diǎn)型
,String字符串
,Array數(shù)組
,Object對(duì)象
,NULL
,Callback回調(diào)類型
- PHP 中的變量用一個(gè)美元符號(hào)后面跟變量名來(lái)表示。變量名是區(qū)分大小寫的。注意:無(wú)需聲明變量類型
$isUnderstand = TRUE; //Boolean
$fileCount = 5; //integer
$height1 = 175.3; //Float
$height2 = 176.9; //Float
$name = 'xxx'; //String
$arr = array(); //Array
$sumHeight = $height1 + $height2;//操作變量
$fullName = $name.'yyy';
- 在
PHP
中Array
分兩種(沒(méi)有字典的概念,在JSON與對(duì)象轉(zhuǎn)換中經(jīng)常容易出錯(cuò))
:
1).索引數(shù)組(相當(dāng)于C++中的數(shù)組);
$arr = array(1,2,3,4,'hello','world');
echo $arr[5];
2).關(guān)聯(lián)數(shù)組(鍵值對(duì),相當(dāng)于C++中的Map)
$arr = array('h'=>'hello','w'=>'world');
echo $arr['w'];
- 控制語(yǔ)句
- 流程控制
if else, switch
//if else
$isOK = TRUE;
$isReady = TRUE;
if($isOK){
//dosomething
}elseif($isReady){
//dosomething
}else{
//dosomething
}
//switch
$str = '30';
switch ($str){
case '20':
echo $str;
break;
case '30':
echo $str.'hello';
break;
}
- 循環(huán)控制
for, foreach,while
for ($i = 0;$i < 100; $i++){
//statement
}
foreach (array as $value){
//statement
}
// 或者:
foreach (array as $key => $value){
//statement
}
3.常用函數(shù)
- 字符串操作
$str = '345671';
$arr = array(1,2,3,4);
//字符串獲取
echo substr($str,1,2);//從字符串中獲取其中的一部分
//字符串連接
echo implode($arr,'*');//使用字符將數(shù)組的內(nèi)容組合成一個(gè)字符串
echo join($arr,'*');//同 implode()
//字符串分割
print_r(explode('*',$str,2));//使用一個(gè)字符串分割另一個(gè)字符串,返回?cái)?shù)組
print_r(str_split($str,3));//將字符串分割到數(shù)組中,每個(gè)數(shù)組中3個(gè)元素
//字符串替換
echo str_replace('*','$',$str);//把字符串的一部分替換為另一個(gè)字符串
//字符串計(jì)算
echo strpos('abcdecf', 'c'); //輸出 2
$str1 = "This function returns the last occurance of a string";
echo strlen($str1);//取得字符串的長(zhǎng)度
$pos = strrpos($str1, "st");
if($pos !== FALSE){
echo '字串 st 最后出現(xiàn)的位置是:',$pos;
} else {
echo '查找的字符串中沒(méi)有 in 字串';
}
- 日期操作
<?php
//do something
sleep(3);
//do something
$running_time = time() - $_SERVER['REQUEST_TIME'];
echo '頁(yè)面運(yùn)行時(shí)間:',$running_time,' 秒';
?>
<?php
date_default_timezone_set('Asia/Shanghai');//設(shè)置時(shí)區(qū)
echo date('Y-m-d h:i:s',time());//輸出格式
?>
- JSON轉(zhuǎn)換
<?php
//encode
$arr = array('h'=>'hello','w'=>'world','p'=>'PHP','list'=>array(1,2,3,100));
echo json_encode($arr);//將數(shù)組轉(zhuǎn)換成JSON
//decode
$str = '{"h":"hello","w":"world","p":"PHP","list":[1,2,3,100]}';
print_r(json_decode($str));//將JSON轉(zhuǎn)換成數(shù)組
?>
- 文件操作
<?php//打開(kāi)文件
if(!file_exists("test.txt")){ //如果文件不存在(默認(rèn)為當(dāng)前目錄下)
$fh = fopen("test.txt","w");
fclose($fh); //關(guān)閉文件
}
?>
<?php//打開(kāi)互聯(lián)網(wǎng)文件
$fh = fopen("http://www.baidu.com/", "r");
if($fh){
while(!feof($fh)) {
echo fgets($fh);
}
}
?>
<?php//打開(kāi)文件
// 讀取時(shí)同事將換行符轉(zhuǎn)換成 <br />
//file_get_contents()把整個(gè)文件讀入一個(gè)字符串,成功返回一個(gè)字符串,失敗則返回FALSE
echo nl2br(file_get_contents('test.txt'));
?>
<?php//打開(kāi)文件
$fh = @fopen("test.txt","r") or die("打開(kāi) test.txt 文件出錯(cuò)!");
// if條件避免無(wú)效指針
if($fh){
while(!feof($fh)) {
echo fgets($fh), '<br />';
}
}
fclose($fh);
?>
<?php// 要寫入的文件名字
$filename = 'file.txt';
// 寫入的字符
$word = "你好!";
$fh = fopen($filename, "w");
echo fwrite($fh, $word); // 輸出:6
fclose($fh);
?>
<?php//寫入文件
echo file_put_contents("test.txt", "This is something.");
?>
- 上傳文件
文件上傳功能是網(wǎng)絡(luò)生活中經(jīng)常使用的一個(gè)功能。使用 PHP 可以很方便的實(shí)現(xiàn)文件上傳,其具體流程如下: 表單選擇文件 -> 檢查文件大小及類型 -> 生成臨時(shí)文件 -> 移動(dòng)臨時(shí)文件至文件存儲(chǔ)目錄 -> 記錄文件信息以便于管理。
- HTML表單
<form enctype="multipart/form-data" action="upload.php" method="post">
<label for="file">請(qǐng)選擇上傳的文件</label>
<input type="file" name="file" size="40" />
<br />
<input type="submit" name="submit" value="確定" />
</form>
2.PHP文件處理
//upload.php
<?php
//文件存儲(chǔ)路徑
$file_path="upload/";
//664權(quán)限為文件屬主和屬組用戶可讀和寫,其他用戶只讀。
if(is_dir($file_path)!=TRUE) mkdir($file_path,0664) ;
//定義允許上傳的文件擴(kuò)展名
$ext_arr = array("gif", "jpg", "jpeg", "png", "bmp", "txt", "zip", "rar");
if (empty($_FILES) === false) {
//判斷檢查
if($photo_up_size > 2097152){
exit("對(duì)不起,您上傳的照片超過(guò)了2M。");
}
if($_FILES["file"]["error"] > 0){
exit("文件上傳發(fā)生錯(cuò)誤:".$_FILES["file"]["error"]);
}
//獲得文件擴(kuò)展名
$temp_arr = explode(".", $_FILES["file"]["name"]);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
//檢查擴(kuò)展名
if (in_array($file_ext, $ext_arr) === false) {
exit("上傳文件擴(kuò)展名是不允許的擴(kuò)展名。");
}
//以時(shí)間戳重命名文件
$new_name = time().".".$file_ext;
//將文件移動(dòng)到存儲(chǔ)目錄下
move_uploaded_file($_FILES["file"]["tmp_name"],"$file_path" . $new_name);
//向數(shù)據(jù)表寫入文件存儲(chǔ)信息以便管理
//*********** 代碼略 ***********//
echo "文件上傳成功!";
exit;
} else {
echo "無(wú)正確的文件上傳";
}
?>
- 生成圖片
圖像生成和處理
<?php
$img = imagecreate(400,400);//創(chuàng)建image
imagecolorallocate($img,0,0,0);//設(shè)置背景色
header('Content-type: image/png');
imagepng($img);
?>
- 圖片打水印
圖像生成和處理
<?php
$img = imagecreate(400,400);//創(chuàng)建image
imagecolorallocate($img,0,0,0);//設(shè)置背景色
imagestring($img,0,0,200,20,'水印',255,0,0);//添加水印
header('Content-type: image/png');
imagepng($img);
?>
4. 表單及會(huì)話
- 表單創(chuàng)建和提交
常見(jiàn)表單類型:PHP 表單
,PHP $_POST
,PHP $_GET
<html>
<body>
<form name="commentform" method="post" action="comment.php">
<p>稱呼: <input type="text" name="nickname" /></p>
<input type="submit" value="提 交" />
</form>
</body>
</html>
//comment.php
<html>
<body>
<p>您的稱呼是:<?php echo $_POST["nickname"]; ?></p>
</body>
</html>
- 會(huì)話管理
- Cookie設(shè)置和獲取
(PHP 內(nèi)置了 $_COOKIE 變量以訪問(wèn)設(shè)置的cookie值)
<?php//設(shè)置Cookie
setcookie("username", "xiaoli", time()+3600, "/", ".5idev.com");
?>
<?php//讀取Cookie
if (isset($_COOKIE["username"])) {
echo "歡迎你: ".$_COOKIE["username"];
} else {
echo "請(qǐng)登陸";
}
?>
<?php//銷毀Cookie
setcookie("username", "", time()-3600);//失效時(shí)間
?>
- Session設(shè)置
(PHP內(nèi)置的$_SESSION變量可以很方便的訪問(wèn)設(shè)置的session變量。)
//要?jiǎng)?chuàng)建 session ,必須先使用 session_start() 函數(shù)開(kāi)啟一個(gè) session 會(huì)話,系統(tǒng)會(huì)分配一個(gè)會(huì)話 ID:
<?php
session_start();
?>
//使用 session_register() 函數(shù)可以在目前會(huì)話下注冊(cè)一個(gè)或多個(gè)全局 session 變量。
<?php
session_start();
$username = "xiaoming";
session_register("username");
//session_start();//方式二
//$_SESSION["username"] = "xiaoming";//方式二
?>
//讀取Session
<?php
session_start();
echo "登記的用戶名為:".$_SESSION["username"]; //輸出 登記的用戶名為:xiaoming
?>
//可以通過(guò) session_unregister() 函數(shù)來(lái)注銷單個(gè) session 變量或使用 session_unset() 來(lái)注銷整個(gè) session 會(huì)話。
<?php
session_start();
session_unregister("username"); //注銷 session 變量
session_unset(); //注銷 session 會(huì)話
//unset($_SESSION["username"]);//方式二
?>
5. 總結(jié)
哈哈,PHP是世界上最好的語(yǔ)言.