PHP模擬發送POST請求之2、用PHP和JS處理URL信息

明白了HTTP請求的頭信息後,咱們還須要對請求地址有所瞭解。再者,HTTP GET請求是靠URL實現的,因此瞭解URL的構造,處理URL的重要性不言而喻。html

在PHP中咱們用parse_url()函數來處理URL信息。數組

其函數原型以下:併發

array parse_url ( string $url [,URL_COSTANT])函數

本函數解析一個 URL 並返回一個關聯數組,包含在 URL 中出現的各類組成部分。ui

對嚴重不合格的 URL,parse_url() 可能會返回 FALSE 併發出 E_WARNING。不然會返回一個關聯數組,其組成部分爲(至少有一個)url

其正確的返回值以下:spa

 scheme  http 協議信息 

 host   主機信息 

 port   端口號

 user   用戶名

 pass   密碼

 path  站內路徑

 query  在問號 ? 以後的查詢信息  

 fragment  在散列符號 # 以後 錨點信息 Hash信息

下面是一個典型的URL字符串,咱們對其用parse_url()解析,並輸出其結果數組。code

$url='https://zbs:mypass@www.baidu.com:8080/home/index.html?gender=male&write=code#anchor';

$arr=parse_url($url);

array (size=8)

'scheme' => string 'https' 

'host' => string 'www.baidu.com' 

'port' => int 8080

'user' => string 'zbs' 

'pass' => string 'mypass' 

'path' => string '/home/index.html' 

'query' => string 'gender=male&write=code' 

'fragment' => string 'anchor'

另外,咱們還能夠對第二個參數賦值,指定要返回的URL部分,對應的URL_CONST取值以下:htm

scheme:PHP_URL_SCHEME, 對象

host:PHP_URL_HOST, 

port:PHP_URL_PORT, 

user:PHP_URL_USER, 

pass:PHP_URL_PASS, 

path:PHP_URL_PATH, 

query:PHP_URL_QUERY,

fragment:PHP_URL_FRAGMENT.

例如咱們要指定返回地址的查詢字段信息:

$url='https://zbs:mypass@www.baidu.com:8080/home/index.html?gender=male&write=code#anchor';

$arr=parse_url($url,PHP_URL_QUERY);//string '/home/index.html

理解了如何拆分URL信息後,咱們也更須要學會拼合URL信息,拼合URL信息有一個專門的函數http_build_url(),但此函數因其處理繁瑣,通常較少使用,咱們經常使用字符串來拼合URL,在處理較多的查詢信息(query_string)時,咱們會用http_build_query()函數。

http_build_query()函數能幫咱們將一個關聯數組快速拼合成一個查詢字符串,它甚至能夠將一個對象分析拼合爲一個查詢字符串,但要注意,它只能保留修飾符爲"public"的"屬性",其他信息將會被捨棄。

例:

$info=['run'=>'10km','eat'=>'3kg'];

var_dump(http_build_query($info));//string 'run=10km&eat=3kg'

class Msg{

  public $attr_public="value_public";

  protected $attr_protected="value_protected";

  private $attr_private="value_private";

  function foo(){

    echo "foo";

  }

}

$msg=new Msg();

var_dump(http_build_query($msg));//string 'attr_public=value_public'

 

另:JS獲取當前url信息:

Location 對象是 Window 對象的一個部分,可經過 window.location 屬性來訪問,它包含了有關當前 URL 的信息。

Location 對象屬性

屬性       描述

hash     URL錨點信息

host     主機名和當前 URL 的端口號

hostname  當前URL的主機名

href     完整的URL

pathname    當前URL的路徑部分

port         當前URL的端口號

protocol   當前URL的協議

search      查詢字符串

相關文章
相關標籤/搜索