PHP學習記錄5
PHP $_GET 變數
我們前面在學習的時候已經知道$_GET 變數用於收集來自 method="get" 的表單中的值。
$_GET 變數
預定義的 $_GET 變數用於收集來自 method="get" 的表單中的值。
從帶有 GET 方法的表單傳送的資訊,對任何人都是可見的(會顯示在瀏覽器的位址列),並且對傳送資訊的量也有限制。
<html> <head> <meta charset="utf-8"> <title>php中文網(php.cn)</title> </head> <body> <form action="php_get.php" method="get"> 名字: <input type="text" name="name"><br> 性別:<input type="radio" name="sex" value="男" checked>男 <input type="radio" name="sex" value="女">女<br> 年齡: <input type="text" name="age"><br> <input type="submit" value="提交"> </form> </body> </html>
<?php header("Content-type:text/html;charset=utf-8"); //設定編碼 echo "你的姓名是:" .$_GET['name'] ."<br/>"; echo "你的性別是:" .$_GET['sex']."<br/>"; echo "你的年齡是:".$_GET['age']; ?>
何時使用 method="get"?
在 HTML 表單中使用 method="get" 時,所有的變數名和值都會顯示在 URL 中。
註釋:所以在傳送密碼或其他敏感資訊時,不應該使用這個方法!
然而,正因為變數顯示在 URL 中,因此可以在收藏夾中收藏該頁面。在某些情況下,這是很有用的。
註釋:HTTP GET 方法不適合大型的變數值。它的值是不能超過 2000 個字元的。
$_POST 變數
預定義的 $_POST 變數用於收集來自 method="post" 的表單中的值。
從帶有 POST 方法的表單傳送的資訊,對任何人都是不可見的(不會顯示在瀏覽器的位址列),並且對傳送資訊的量也沒有限制。
註釋:然而,預設情況下,POST 方法的傳送資訊的量最大值為 8 MB(可通過設定 php.ini 檔案中的 post_max_size 進行更改)。
GET 與 POST 的區別:
-
get是從伺服器上獲取資料,post是向伺服器傳送資料。
-
get是把引數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其 內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
-
對於get方式,伺服器端用Request.QueryString獲取變數的值,對於post方式,伺服器端用Request.Form獲取提交的資料。
-
get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
-
get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
建議:
1、get方式的安全性較Post方式要差些,包含機密資訊的話,建議用Post資料提交方式;
2、在做資料查詢時,建議用Get方式;而在做資料新增、修改或刪除時,建議用Post方式;
PHP $_REQUEST 變數
預定義的 $_REQUEST 變數包含了 $_GET、$_POST 和 $_COOKIE 的內容。
$_REQUEST 變數可用來收集通過 GET 和 POST 方法傳送的表單資料。
你將上面的php 檔案修改一下看看
<?php
header("Content-type:text/html;charset=utf-8");//設定編碼 echo"你的姓名是:".$_REQUEST['name']."<br/>"; echo"你的性別是:".$_REQUEST['sex']."<br/>"; echo"你的年齡是:".$_REQUEST['age']; ?>
你會發現不管是$_POST還是$_GET提交的,都能用$_REQUEST接收
PHP多維陣列
PHP多維陣列指的是包含一個或多個以上的陣列
PHP能理解為兩,三,四或五級甚至更多級的多維陣列,不過,超過三級深的陣列大多數人都於管理
註釋 :陣列的維度指示需要選擇元素的索引數
php二維陣列
二維陣列就是陣列的陣列,同理三維陣列就是陣列的陣列的陣列
注:二維陣列需要兩個索引來選擇元素
<?php header("Content-type:text/html;charset=utf-8"); $arr=array( array("小明","90","80","77"), array("小龍","88","75","89"), array("小花","99","95","94"), ); echo $arr[0][0]."---語文:".$arr[0][1].":數學:".$arr[0][2].":英語:".$arr[0][3]."<br>"; echo $arr[1][0]."---語文:".$arr[1][1].":數學:".$arr[1][2].":英語:".$arr[1][3]."<br>"; echo $arr[2][0]."---語文:".$arr[2][1].":數學:".$arr[2][2].":英語:".$arr[2][3]."<br>"; ?>
<?php header("Content-type:text/html;charset=utf-8"); $arr=array( array("小明","90","80","77"), array("小龍","88","75","89"), array("小花","99","95","94"), ); for($x=0;$x<3;$x++){ echo "<p>行數$x</p>"; echo"<ul>"; for($row=0;$row<3;$row++){ echo "<li>".$arr[$x][$row]."</li>"; } echo"</ul>"; } ?>
PHP 三維陣列
注:二維陣列需要兩個索引來選擇元素
例項
<?php $name=array( array( array('tom','andy','jack'), array('row','laya','lis') ), ); print_r($name[0][1][1]); ?>
程式執行結果:
laya
PHP 日期和時間
PHP date() 函式用於對日期或時間進行格式化
時間戳(timestamp),通常是一個字元序列,唯一地標識某一刻的時間
格式化日期:date()函式將返回引數timestamp按照指定格式而產生的字串。
語法
date(format, timestamp)
引數 | 描述 |
format | 必需,規定時間戳的格式。 |
timestamp |
可選,規定時間戳。預設是當前時間和日期 |
☆ 時間戳是一種字元序列,它表示具體事件發生的時間和日期
PHP Date() - 格式化日期
date() 函式的第一個必需引數 format 規定了如何格式化日期/時間。
這裡列出了一些可用的字元:
d - 代表月中的天 (01 - 31)
- m - 代表月 (01 - 12)
- Y - 代表年 (四位數)
可以在字母之間插入其他字元,比如 "/"、"." 或者 "-",這樣就可以增加附加格式了:
<?php
echo date("Y/m/d") . "<br>";
echo date("Y.m.d") . "<br>";
echo date("Y-m-d");
?>
上面程式碼的輸出如下所示:
2016/10/21
2016.10.21
2016-10-21
下面是常用於時間的字元:
·h - 帶有首位零的 12 小時小時格式
· i - 帶有首位零的分鐘
· s - 帶有首位零的秒(00 -59)
· a - 小寫的午前和午後(am 或 pm)
例項
下面的例子以指定的格式輸出當前時間:
<?php echodate("H:i:sa"); ?>
程式執行結果:
15:53:06pm
☆ PHP date()函式會返回伺服器當前的時間/日期
獲得時區
如果從程式碼返回的不是正確的時間,有可能是因為您的伺服器位於其他國家或者被設定為不同時區。
因此,如果您需要基於具體位置的準確時間,您可以設定要用的時區。
下面的例子把時區設定為 "Asia/Shanghai",然後以指定格式輸出當前時間:
<?php header("Content-type:text/html;charset=utf-8");//設定編碼 date_default_timezone_set("Asia/Shanghai"); echo"當前時間是".date("h:i:sa"); ?>
通過 PHP mktime() 建立日期
date() 函式中可選的時間戳引數規定時間戳。如果您未規定時間戳,將使用當前日期和時間(正如上例中那樣)。
mktime() 函式返回日期的 Unix 時間戳。Unix 時間戳包含 Unix 紀元(1970 年 1 月 1 日 00:00:00 GMT)與指定時間之間的秒數。
語法
mktime(hour,minute,second,month,day,year)
下面的例子將使用mktime()函式中一系列的引數來建立日期和時間
<?php header("Content-type:text/html;charset=utf-8");//設定編碼 $d=mktime(9,12,31,6,10,2016); echo"建立日期是".date("Y-m-dh:i:sa",$d); ?>
程式執行結果:
建立日期是 2016-06-10 09:12:31am
通過 PHP strtotime() 用字串來建立日期
PHP strtotime() 函式用於把人類可讀的字串轉換為 Unix 時間。
語法
strtotime(time,now)
下面的例子通過 strtotime() 函式建立日期和時間:
<?php header("Content-type:text/html;charset=utf-8");//設定編碼 $d=strtotime("10:38pmApril152016"); echo"建立日期是".date("Y-m-dh:i:sa",$d); ?>
程式執行結果:
建立日期是 2016-04-15 10:38:00pm
PHP 在將字串轉換為日期這方面非常聰明,所以您能夠使用各種值:
例項
<?php $d=strtotime("tomorrow"); echodate("Y-m-dh:i:sa",$d)."<br>"; $d=strtotime("nextSaturday"); echodate("Y-m-dh:i:sa",$d)."<br>"; $d=strtotime("+3Months"); echodate("Y-m-dh:i:sa",$d)."<br>"; ?>
程式執行結果:
2016-10-10 12:00:00am
2016-10-15 12:00:00am
2017-01-09 04:01:09pm
注:strtotime() 並不完美,所以請記得檢查放入其中的字串。
例項
<?php $startdate=strtotime("Saturday"); $enddate=strtotime("+5weeks",$startdate); while($startdate<$enddate){ echodate("Md",$startdate),"<br>"; $startdate=strtotime("+1week",$startdate); } ?>
程式執行結果:
Oct 15
Oct 22
Oct 29
Nov 05
Nov 12
例項
用strtotime()函式獲取英文格式日期時間字串的時間戳
<?php header("Content-type:text/html;charset=utf-8");//設定編碼 echostrtotime("now"),"<br>";//當前時間的時間戳 echo"輸出時間:".date("Y-m-dH:i:s",strtotime("now")),"<br>";//輸出當前時間 echostrtotime("24May2016"),"<br>";//輸出指點時間的時間戳 echo"輸出時間:".date("Y-m-dH:i:s",strtotime("24May2016")),"<br>";//輸入指定的日期 ?>
程式執行結果:
1476000300
輸出時間:2016-10-09 16:05:00
1464019200
輸出時間:2016-05-24 00:00:00
例項
實現倒計時的功能
<?php header("Content-type:text/html;charset=utf-8");//設定編碼 $time=strtotime(date("Y-m-dH:i:s"));//當前的系統時間 $time1=strtotime("2017-10-112:00:00");//國慶節的放假時間 $time2=strtotime("2017-1-1");//元旦的放假時間 $sub=ceil(($time1-$time)/3600);//(60秒*60分)/小時 $sub1=ceil(($time2-$time1)/86400);//(60秒*60分*24小時)/天 echo"離國慶放假時間還有 <strong>$sub</strong> 小時"; echo"<p>"; echo"離元旦放假時間還有 <strong>$sub1</strong> 天"; ?>
PHP包含檔案
在 PHP 中,您可以在伺服器執行 PHP 檔案之前在該檔案中插入一個檔案的內容。
include 和 require 語句用於在執行流中插入寫在其他檔案中的有用的程式碼。
include 和 require 除了處理錯誤的方式不同之外,在其他方面都是相同的:
require 生成一個致命錯誤(E_COMPILE_ERROR),在錯誤發生後腳本會停止執行。
include 生成一個警告(E_WARNING),在錯誤發生後腳本會繼續執行。
因此,如果您希望繼續執行,並向用戶輸出結果,即使包含檔案已丟失,那麼請使用 include。否則,在框架、CMS 或者複雜的 PHP 應用程式程式設計中,請始終使用 require
向執行流(從一條語句前進到下一條語句,直至執行到程式的結尾處)引用關鍵檔案。這有助於提高應用程式的安全性和完整性,在某個關鍵檔案意外丟失的情況下。
包含檔案省去了大量的工作。這意味著您可以為所有頁面建立標準頁頭、頁尾或者選單檔案。然後,在頁頭需要更新時,您只需更新這個頁頭包含檔案即可。
語法
include "filename";
或
require "filename";
例項
假設有一個名為header.php 的檔案 ,如下
<?php header("Content-type:text/html;charset=utf-8");//設定編碼 $name="PHP中文網"; $php="PHP"; ?>
使用 include 包含header.php 檔案
<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>PHP中文網</title> </head> <body> <?php include"header.php"; echo"歡迎來到"."$name"."學習"."$php"; ?> </body> </html>
例項
有一個名為 "menu.php" 的標準選單檔案:
<?php header("Content-type:text/html;charset=utf-8");//設定編碼 echo'<ahref="/index.asp">首頁</a>- <ahref="/html/index.asp">HTML教程</a>- <ahref="/css/index.asp">CSS教程</a>- <ahref="/js/index.asp">JavaScript教程</a>- <ahref="/php/index.asp">PHP教程</a>'; ?>
使用 "require" 包含 "menu.php" 檔案
<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>PHP中文網</title> </head> <body> <h1>歡迎來到PHP中文網</h1> <?php require"header.php"; ?> </body> </html>
程式執行結果:
歡迎來到PHP中文網
首頁 - HTML 教程 - CSS 教程 - JavaScript 教程 - PHP 教程
include VS require
include 與 require 有一個巨大的差異:如果用 include 語句引用某個檔案並且 PHP 無法找到這個檔案,指令碼會繼續執行。
如果我們使用 require 語句完成相同的案例,echo 語句不會繼續執行,因為在 require 語句返回嚴重錯誤之後指令碼就會終止執行
PHP檔案處理
PHP 擁有的多種函式可供建立、讀取、上傳以及編輯檔案。
注意:請謹慎操作檔案!
當您操作檔案時必須非常小心。如果您操作失誤,可能會造成非常嚴重的破壞。
PHP readfile()函式
readfile($檔名)
功能:傳入一個檔案路徑,輸出一個檔案
例如 有個名為file.txt 的檔案,內容如下
Welcome in the PHP Chinese learning PHP
用readfile()函式讀取此檔案並寫到輸出流的 PHP 程式碼如下(如讀取成功則 readfile() 函式返回位元組數):
位元組數:英文佔一個位元組 gbk編碼中文佔2個 utf-8中文佔3個 空格和符號佔1個
<?php echoreadfile("D:WWW/item/file.txt"); ?>
程式執行結果:
Welcome in the PHP Chinese learning PHP39
file_get_contents開啟檔案
上面的是單純打檔案就直接輸出了,有沒有開啟檔案後,能夠賦值給一個變數的操作方式呢。
PHP當然會提供這種方式。這個方式就是PHP開啟檔案並返回內容的方式之一,我們來看看函式:
file_get_contents ( string filename)
功能:傳入一個檔案或檔案路徑,開啟這個檔案返回檔案的內容。檔案的內容是一個字串。
<?php header("Content-type:text/html;charset=utf-8"); $data = "我是一個兵,來自老百姓"; $numbytes = file_put_contents('binggege.txt', $data); if($numbytes){ echo '寫入成功,我們讀取看看結果試試:'; echo file_get_contents('binggege.txt'); }else{ echo '寫入失敗或者沒有許可權,注意檢查'; } ?>
fopen、fread、fclose操作讀取檔案
fopen ($檔名, 模式)
fread ($操作資源, 讀取長度)
fclose ($操作資源 )
通過上面的函式我們來講解資源型別的通常操作方式:
1. 開啟資源
2. 使用相關函式進行操作
3. 關閉資源
fopen函式 fopen函式的功能是開啟檔案,引數主要有兩個:
1. 檔案開啟的路徑
2. 開啟檔案的模式
資源型別需要其他的函式來操作這個資源。所有的資源有開啟就要有關閉。
fread函式 函式的功能的功能是讀取開啟的檔案資源。讀取指定長度的檔案資源,讀取一部份向後移動一部份。至到檔案結尾。
fclose函式 fclose函式的功能是關閉資源。資源有開啟就有關閉。
檔案可能通過下列模式來開啟:
模式 | 描述 |
---|---|
r | 只讀。在檔案的開頭開始。 |
r+ | 讀/寫。在檔案的開頭開始。 |
w | 只寫。開啟並清空檔案的內容;如果檔案不存在,則建立新檔案。 |
w+ | 讀/寫。開啟並清空檔案的內容;如果檔案不存在,則建立新檔案。 |
a | 追加。開啟並向檔案末尾進行寫操作,如果檔案不存在,則建立新檔案。 |
a+ | 讀/追加。通過向檔案末尾寫內容,來保持檔案內容。 |
x | 只寫。建立新檔案。如果檔案已存在,則返回 FALSE 和一個錯誤。 |
x+ | 讀/寫。建立新檔案。如果檔案已存在,則返回 FALSE 和一個錯誤。 |
註釋:如果 fopen() 函式無法開啟指定檔案,則返回 0 (false)。
檢測檔案末尾(EOF)
feof() 函式檢測是否已到達檔案末尾(EOF)。
在迴圈遍歷未知長度的資料時,feof() 函式很有用。
註釋:在 w 、a 和 x 模式下,您無法讀取開啟的檔案!
if (feof($file)) echo "檔案結尾";逐行讀取檔案
fgets() 函式用於從檔案中逐行讀取檔案。
註釋:在呼叫該函式之後,檔案指標會移動到下一行。
例項
下面的例項逐行讀取檔案,直到檔案末尾為止:
<?php$file = fopen("welcome.txt", "r") or exit("無法開啟檔案!");
// 讀取檔案每一行,直到檔案結尾
while(!feof($file))
{
echo fgets($file). "<br>";
}
fclose($file);
?>
逐字元讀取檔案
fgetc() 函式用於從檔案中逐字元地讀取檔案。
註釋:在呼叫該函式之後,檔案指標會移動到下一個字元。
例項
下面的例項逐字元地讀取檔案,直到檔案末尾為止:
<?php$file=fopen("welcome.txt","r") or exit("無法開啟檔案!");
while (!feof($file))
{
echo fgetc($file);
}
fclose($file);
?>
移動,拷貝,刪除檔案
重新命名檔案
rename($舊名,$新名);
這個函式返回一個bool值,將舊的名字改為新的名字。
例項
<?php $fileName1="text.txt"; $fileName2="text--1.txt"; rename($fileName1,$fileName2); ?>
上面的例子就是將一個text.txt的檔案 改名為text--1.txt 的例子,你不妨可以試下
複製檔案
copy(原始檔,目標檔案)
功能:將指定路徑的原始檔,複製一份到目標檔案的位置。
刪除檔案
unlink (指定路徑的檔案)
檔案常用的函式
filesize 檢測檔案的大小
其他操作檔案的函式,讀取檔案
函式名 | 功能 |
file | 把整個檔案讀入一個數組中 |
fgets | 從檔案指標中讀取一行,讀到最後返回false |
fgetc | 從檔案指標中讀取一個字元,讀到最後返回false |
ftruncate | 將檔案截斷到給定的長度 |
我們通過一個例項來把上面幾個函式都用到。
我們在text.txt檔案中寫入一批檔案:
abcdeefghijklk
opqrst
uvwxyz
12345678
fgetc每次讀取一個
<?php //以增加的r模式開啟 $fp=fopen('text.txt','r+'); //你分發現每次只讀一個字元 echofgetc($fp)."<br>"; //我要全部讀取可以,讀取一次將結果賦值一次給$string while($string=fgetc($fp)){ echo$string; } ?>
程式執行結果:
a
bcdeefghijklk opqrst uvwxyz 12345678
fgets每次開啟一行:
<?php //以增加的r模式開啟 $fp=fopen('text.txt','r+'); //你分發現每次只讀一個字元 echofgets($fp)."<br>"; echofgets($fp)."<br>"; echofgets($fp)."<br>"; echofgets($fp); ?>
程式執行結果:
abcdeefghijklk
opqrst
uvwxyz
12345678
檔案擷取函式
<?php //開啟我們上面的text.txt檔案 $file=fopen("text.txt","a+"); //你可以數數20個字有多長,看看是不是達到效果了 echoftruncate($file,10); fclose($file); ?>
執行一下程式,可以開啟text.txt 檔案,看一下是不是有20的位元組
檔案的時間函式
函式 | 功能說明 |
filectime | 檔案建立時間 |
filemtime | 檔案修改時間 |
fileatime | 檔案上次訪問時間 |
例項
<?php header("Content-type:text/html;charset=utf-8");//設定編碼 $filename='text.txt'; if(file_exists($filename)){ echo"$filename"."檔案的上次訪問時間是:".date("Y-m-dH:i:s",fileatime($filename))."<br>"; echo"$filename"."檔案的建立時間是:".date("Y-m-dH:i:s",filectime($filename))."<br>"; echo"$filename"."檔案的修改時間是:".date("Y-m-dH:i:s",filemtime($filename)); } ?>
程式執行結果:
text.txt檔案的上次訪問時間是: 2016-09-13 17:44:40
text.txt檔案的建立時間是: 2016-09-13 17:32:16
text.txt檔案的修改時間是: 2016-09-13 17:44:55
目錄處理函式
之前我們處理的全都是檔案,那目錄和資料夾怎麼處理呢?
我們就來學習目錄或者稱為資料夾的處理相關函式。
處理資料夾的基本思想如下:
1. 讀取某個路徑的時候判斷是否是資料夾
2. 是資料夾的話,開啟指定資料夾,返回檔案目錄的資源變數
3. 使用readdir讀取一次目錄中的檔案,目錄指標向後偏移一次
4. 使用readdir讀取到最後,沒有可讀的檔案返回false
5. 關閉檔案目錄
我們來學習一下比較常用函式:
函式名 | 功能 |
opendir | 開啟資料夾,返回操作資源 |
readdir | 讀取資料夾資源 |
is_dir | 判斷是否是資料夾 |
closedir | 關閉資料夾操作資源 |
filetype | 顯示是資料夾還是檔案,檔案顯示file,資料夾顯示dir |
例項
<?php //設定開啟的目錄是D盤 $dir="D:/"; //判斷是否是資料夾,是資料夾 if(is_dir($dir)){ if($dh=opendir($dir)){ //讀取一次向後移動一次資料夾指標 echoreaddir($dh).'<br/>'; echoreaddir($dh).'<br/>'; echoreaddir($dh).'<br/>'; echoreaddir($dh).'<br/>'; echoreaddir($dh).'<br/>'; echoreaddir($dh).'<br/>'; //讀取到最後返回false //關閉資料夾資源 closedir($dh); } } ?>
可以執行一下程式,看看是不是你電腦D盤的目錄
判斷檔案的型別
<?php //設定開啟的目錄是D盤 $dir="D:/"; //判斷是否是資料夾,是資料夾 if(is_dir($dir)){ if($dh=opendir($dir)){ //讀取到最後返回false,停止迴圈 while(($file=readdir($dh))!==false){ echo"檔名為:$file:檔案的型別是:".filetype($dir.$file)."<br/>"; } closedir($dh); } } ?>
檔案路徑函式
我們經常會遇到處理檔案路徑的情況。
例如:
1. 檔案字尾需要取出來
2. 路徑需要取出名字不取目錄
3. 只需要取出路徑名中的目錄路徑
4. 或者把網址中的各個部份進行解析取得獨立值
5. 甚至是自己組成一個url出來
很多地方都需要用路徑處理類的函式。
我們把常用的路徑處理函式為大家做了標註,大家對著這個路徑處理函式進行處理即可:
函式名 | 功能 |
pathinfo | 返回檔案的各個組成部份 |
basename | 返回檔名 |
dirname | 檔案目錄部份 |
parse_url | 網址拆解成各部份 |
http_build_query | 生成url 中的query字串 |
http_build_url | 生成一個url |
pathinfo
pathinfo ( string $路徑)
功能:傳入檔案路徑返回檔案的各個組成部份
例項
<?php header("Content-type:text/html;charset=utf-8"); $path_parts=pathinfo('D:/www/a.html'); echo'檔案目錄名:'.$path_parts['dirname']."<br/>"; echo'檔案全名:'.$path_parts['basename']."<br/>"; echo'副檔名:'.$path_parts['extension']."<br/>"; echo'不包含擴充套件的檔名:'.$path_parts['filename']."<br/>"; ?>
程式執行結果:
檔案目錄名:D:/www
檔案全名:a.html
副檔名:html
不包含擴充套件的檔名:a
basename
basename ( string $路徑[, string $suffix ])
功能:傳入路徑返回檔名
第一個引數傳入路徑。
第二個引數,指定我檔名到了指定字元停止。
例項
<?php echo"1:".basename("d:/www/a.html",".d")."<br>"; echo"2:".basename("d:/www/include")."<br>"; echo"3:".basename("d:/www/text.txt")."<br>"; ?>
程式執行結果:
1: a.html
2: include
3: text.txt
dirname
dirname(string $路徑)
功能:返回檔案路徑的檔案目錄部份
例項
<?php $a=dirname(__FILE__); echo$a; ?>
執行一下你的程式
parse_url
parse_url ( string $路徑 )
功能:將網址拆解成各個部份
例項
<?php $url='http://username:password@hostname:9090/path?arg=value#anchor'; var_dump(parse_url($url)); ?>
程式執行結果:
array(8) {
["scheme"]=>
string(4) "http"
["host"]=>
string(8) "hostname"
["port"]=>
int(9090)
["user"]=>
string(8) "username"
["pass"]=>
string(8) "password"
["path"]=>
string(5) "/path"
["query"]=>
string(9) "arg=value"
["fragment"]=>
string(6) "anchor"
}
http_build_query
http_build_query ( mixed $需要處理的資料)
功能:生成url 中的query字串
例項
<?php //定義一個關聯陣列 $data=[ 'username'=>'liwenkai', 'area'=>'hubei', 'pwd'=>'123' ]; //生成query內容 echohttp_build_query($data); ?>
程式執行結果:
username=liwenkai&area=hubei&pwd=123
如果開啟一個檔案,檔名為中文,如果系統程式設計和當前文件編碼不一致,會導致檔案找不到無法開啟,解決方法是用 iconv 函式編碼轉換成一致,如下:
$fpath=iconv('UTF-8','GB2312',"題庫.csv");
$file=fopen($fpath,"r") or exit("無法開啟檔案!");
//此處省略相關操作
fclose($file);
用相對路徑打不開子目錄中的檔案時,可用絕對路徑開啟,如下:
$file=fopen(dirname(__FILE__).'\\files\\tk.csv',"r") or exit("無法開啟檔案!");
//此處省略相關操作
fclose($file);