1. 程式人生 > 其它 >PHP學習記錄5

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 的區別:

  1. get是從伺服器上獲取資料,post是向伺服器傳送資料。

  2. get是把引數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其 內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。

  3. 對於get方式,伺服器端用Request.QueryString獲取變數的值,對於post方式,伺服器端用Request.Form獲取提交的資料。

  4. get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。

  5. 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);