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


明白了HTTP請求的頭信息后,我們還需要對請求地址有所了解。再者,HTTP GET請求是靠URL實現的,所以了解URL的構造,處理URL的重要性不言而喻。

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

其函數原型如下:

array parse_url ( string $url [,URL_COSTANT])

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

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

其正確的返回值如下:

 scheme  http 協議信息 

 host   主機信息 

 port   端口號

 user   用戶名

 pass   密碼

 path  站內路徑

 query  在問號 ? 之后的查詢信息  

 fragment  在散列符號 # 之后 錨點信息 Hash信息

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

$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取值如下:

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      查詢字符串


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM