string http_build_query ( mixed $query_data
[, string $numeric_prefix
[, string $arg_separator
[, int $enc_type
= PHP_QUERY_RFC1738
]]] )php
使用給出的關聯(或下標)數組生成一個通過 URL-encode 的請求字符串。html
參數:
query_data
能夠是數組或包含屬性的對象。數組
一個query_data數組能夠是簡單的一維結構,也能夠是由數組組成的數組(其依次能夠包含其它數組)。markdown
若是query_data是一個對象,只有public屬性纔會加入結果。app
numeric_prefix
若是在基礎數組中使用了數字下標同時給出了該參數,此參數值將會做爲基礎數組中的數字下標元素的前綴。post
這是爲了讓 PHP 或其它 CGI 程序在稍後對數據進行解碼時獲取合法的變量名。ui
arg_separator
除非指定並使用了這個參數,不然會用 arg_separator.output來分隔參數(php.ini中有此參數,默認是」&」)。google
enc_type
默認使用 PHP_QUERY_RFC1738。編碼
若是 enc_type 是 PHP_QUERY_RFC1738,則編碼將會以 » RFC 1738 標準和 application/x-www-form-urlencoded 媒體類型進行編碼,空格會被編碼成加號(+)。url
若是 enc_type 是 PHP_QUERY_RFC3986,將根據 » RFC 3986 編碼,空格會被百分號編碼(%20)。
例子1:只使用query_data參數:
<?php $data = array( 'name' => 'fdipzone',
'gender' => 'male',
'profession' => 'programmer',
'explain' => 'a new programmer' ); echo http_build_query($data); ?>
輸出: name=fdipzone&gender=male&profession=programmer&explain=a+new+programmer
例子2: query_data使用一維下標數組,指定
numeric_prefix=info_,arg_separator=#,enc_type=PHP_QUERY_RFC3986
<?php $data = array('fdipzone','male','programmer','a new programmer'); echo http_build_query($data, 'info_', '#', PHP_QUERY_RFC3986); ?>
輸出:
info_0=fdipzone#info_1=male#info_2=programmer#info_3=a%20new%20programmer
parse_url 解析url,返回其組成部分
mixed parse_url ( string $url [, int $component = -1 ] )
參數:
url
要解析的url,無效字符將使用_來替換
component
PHP_URL_PATH、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一個來獲取 URL 中指定的部分的 string。 (除了指定爲 PHP_URL_PORT 後,將返回一個 integer 的值)。
返回值:
對嚴重不合格的 URL,parse_url() 可能會返回 FALSE。
返回的數據通常包含如下幾種
scheme(如http),host,port,user,pass,path,query(在問號?以後),fragment(在散列符號#以後)
例子:
<?php $url = 'http://fdipzone:123456@www.fdipzone.com:80/test/index.php?id=1#tag'; print_r(parse_url($url)); echo parse_url($url, PHP_URL_SCHEME).PHP_EOL; echo parse_url($url, PHP_URL_HOST).PHP_EOL; echo parse_url($url, PHP_URL_PORT).PHP_EOL; echo parse_url($url, PHP_URL_USER).PHP_EOL; echo parse_url($url, PHP_URL_PASS).PHP_EOL; echo parse_url($url, PHP_URL_PATH).PHP_EOL; echo parse_url($url, PHP_URL_QUERY).PHP_EOL; echo parse_url($url, PHP_URL_FRAGMENT).PHP_EOL; ?>
輸出:
Array ( [scheme] => http [host] => www.fdipzone.com [port] => 80 [user] => fdipzone [pass] => 123456 [path] => /test/index.php [query] => id=1 [fragment] => tag )
http
www.fdipzone.com
80
fdipzone
123456
/test/index.php
id=1
tag
parse_str 將字符串解析成多個變量
void parse_str ( string $str [, array &$arr ] )
若是 str 是 URL 傳遞入的查詢字符串(query string),則將它解析爲變量並設置到當前做用域。
參數:
str
輸入的字符串
arr
若是設置了第二個變量arr,變量將會以數組元素的形式存入到這個數組,做爲替代。
例子1:解析到當前做用域
<?php $str = 'name=fdipzone&gender=male&profession=programer&explain=a new programmer'; parse_str($str); echo $name.PHP_EOL; echo $gender.PHP_EOL; echo $profession.PHP_EOL; echo $explain.PHP_EOL; ?>
輸出:
fdipzone
male
programer
a new programmer
例子2:結果保存到arr數組
<?php $str = 'name=fdipzone&gender=male&profession=programer&explain=a new programmer'; parse_str($str, $arr); print_r($arr); ?>
輸出:
Array ( [name] => fdipzone [gender] => male [profession] => programer [explain] => a new programmer )
首先使用parse_url獲取query,而後在使用parse_str解析參數
<?php $url = 'http://www.fdipzone.com/test/index.php?name=fdipzone&gender=male&profession=programmer&explain=a new programmer'; $query = parse_url($url, PHP_URL_QUERY); parse_str($query, $data); print_r($data); ?>
輸出:
Array ( [name] => fdipzone [gender] => male [profession] => programmer [explain] => a new programmer )