parsephp
① php中使用parse_url()對網址進行解析的實現代碼(parse_url詳解)
PHP
解析
URL函數:
parse_url詳解
parse_url
—
解析
URL,返回其組成部分
說明
array
parse_url
(
string
$url
)
本函數解析一個
URL
並返回一個關聯數組,包含在
URL
中出現的各種組成部分。
本函數不是用來驗證給定
URL
的合法性的,只是將其分解為下面列出的部分。不完整的
URL
也被接受,parse_url()
會嘗試盡量正確地將其解析。
參數
url
要解析的
URL
返回值
對嚴重不合格的
URL,parse_url()
可能會返回
FALSE
並發出
E_WARNING。否則會返回一個關聯數組,其組成部分為(至少有一個):
scheme
–
如
http
host
port
user
pass
path
query
–
在問號
?
之後
fragment
–
在散列符號
#
之後
範例
parse_url()
例子
復制代碼
代碼如下:
<?php
$url
=
'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
?>
以上常式會輸出:
Array
(
[scheme]
=>
http
[host]
=>
hostname
[user]
=>
username
[pass]
=>
password
[path]
=>
/path
[query]
=>
arg=value
[fragment]
=>
anchor
)
常常我們會傳送一大串網址,然後要解析的話,只能不斷地去切token來解析。但是在php中,一定要學會使用前人所寫過的函式,這樣開發速度才會快別人一截。當然,要解析網址的話,就得去找相關的指令,而今天要介紹的,就是php中的parse_url這個函式。
這個函式主要是用來解析網址,而首先先看一下這個函式原型,其官方描述如下:
mixed
parse_url
(
string
$url
[,
int
$component=
-1
]
)
而php官方舉了一個例子,而我將他擴充如下,以方便講解。
復制代碼
代碼如下:
<?php
$url
=
'http://username:password@hostname/path?arg1=value1&arg2=value2#anchor';
print_r(parse_url($url));
?>
首先,先看一下這個程式的輸出結果
Array
(
[scheme]
=>
http
[host]
=>
hostname
[user]
=>
username
[pass]
=>
password
[path]
=>
/path
[query]
=>
arg1=value1&arg2=value2
[fragment]
=>
anchor
)
其中,scheme是指他走的路線,而host則是站台網址,user則是使用者名稱,pass則是密碼,path則是路徑,query則是參數,fragment則是錨點。
而在「$component」的部份,則是有以下的參數可供傳遞。
PHP_URL_SCHEME
PHP_URL_HOST
PHP_URL_USER
PHP_URL_PASS
PHP_URL_PATH
PHP_URL_QUERY
PHP_URL_FRAGMENT
而這幾個參數則分別代表了Array中的scheme、host、user、pass、path、query和fragment。
同樣,舉例來說,如果使用PHP_URL_PATH和PHP_URL_QUERY來說,以下為他的示範。
復制代碼
代碼如下:
<?php
$url
=
'http://username:password@hostname/path?arg1=value1&arg2=value2#anchor';
echo
nl2br(parse_url($url,
PHP_URL_PATH)."\n");
echo
nl2br(parse_url($url,
PHP_URL_QUERY)."\n");
?>
而輸出結果將如下:
/path
arg1=value1&arg2=value2
② PHP異常Parse error: syntax error, unexpected T_VAR錯誤解決方法
其實,這是一個非常容易解決掉的問題。在我看來,似曾相識,呵呵,最近學JavaScript可是學會了使用var聲明變數。
其實,在PHP中根本不需要使用var聲明的,但是當一個變數作為一個類的成員變數的時候,使用var還是沒有問題的。
在外部使用var就報錯Parse
error:
syntax
error,
unexpected
T_VAR
in...,例如我的出錯信息:
Parse
error:
syntax
error,
unexpected
T_VAR
in
D:\Apache2.2\htdocs\shirdrn\page\p2\pageUtil.inc
on
line
34
我在測試:在一個類的內部,使用一個自己定義的類對象作為這個類的成員時,出錯了。
Address類對應的address.inc代碼:
復制代碼
代碼如下:
<?php
class
Address
{
var
$road;
function
Address(){}
function
setRoad($road){
$this->road
=
$road;
}
}
?>
Person類及其測試代碼為person.php如下:
復制代碼
代碼如下:
<?php
require("address.inc");
class
Person
{
var
$name;
var
$address;
function
Person(){
}
function
display(){
echo
"Name
:
".$this->name."<BR>";
echo
"Road
:
".$this->address->road."<BR>";
}
}
var
$p
=
new
Person();
$p->address
=
new
Address();
$p->address->setRoad("Chagnchun
Road");
$p->name
=
"Shirdrn";
$p->display();
?>
③ parse_url參見
在PHP中,有幾個內置函數用於處理和解析文件或路徑的相關信息。讓我們逐個了解一下它們的功能。
首先,pathinfo() 函數是一個非常實用的工具,它能夠分解一個路徑,返迴路徑中的各個組成部分。這個函數會返回一個關聯數組,包括路徑的目錄部分、文件名部分以及可能的擴展名等信息。這對於需要處理文件路徑的場景非常有用。
另一個相關的函數是 parse_str(),它的作用是解析一個字元串,將其解析為變數。這個函數通常用於處理URL查詢字元串或HTTP POST數據,將其中的鍵值對轉換為PHP變數,方便進一步的操作和存儲。
對於單獨獲取路徑中的目錄部分,可以使用 dirname() 函數。它接收一個路徑作為參數,返回的是路徑中從根目錄到文件或目錄名的完整部分,不包括文件名。這對於需要提取文件目錄路徑時非常實用。
最後,如果你只需要文件名部分,basename() 函數則是你的選擇。它同樣接收一個路徑,返回的是路徑的最後一個部分,即文件名,不包含路徑信息。這對於處理文件名或下載鏈接時非常有用。
總的來說,這些函數在PHP中扮演著重要的角色,幫助開發者輕松處理和操作文件路徑,提高代碼的效率和可讀性。
(3)parsephp擴展閱讀
(PHP 4, PHP 5)