php使用http_build_query,parse_url,parse_str创建与解析url
2017-01-14 15:34
1341 查看
1.http_build_query
http_build_query 可以创建urlencode之后的请求字符串。string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )1
1
参数:
query_data
可以是数组或包含属性的对象。
一个query_data数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。
如果query_data是一个对象,只有public属性才会加入结果。
numeric_prefix
如果在基础数组中使用了数字下标同时给出了该参数,此参数值将会作为基础数组中的数字下标元素的前缀。
这是为了让
PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。
arg_separator
除非指定并使用了这个参数,否则会用 arg_separator.output来分隔参数(php.ini中有此参数,默认是”&”)。
enc_type
默认使用 PHP_QUERY_RFC1738。
如果 enc_type 是 PHP_QUERY_RFC1738,则编码将会以 » RFC 1738 标准和 application/x-www-form-urlencoded 媒体类型进行编码,空格会被编码成加号(+)。
如果 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); ?>1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
输出:
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); ?>1
2
3
4
1
2
3
4
输出:
info_0=fdipzone#info_1=male#info_2=programmer#info_3=a%20new%20programmer1
1
2.parse_url
parse_url 解析url,返回其组成部分mixed parse_url ( string $url [, int $component = -1 ] )1
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; ?>1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
输出:
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 tag1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
3.parse_str
parse_str 将字符串解析成多个变量void parse_str ( string $str [, array &$arr ] )1
1
如果 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; ?>1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
输出:
fdipzone male programer a new programmer1
2
3
4
1
2
3
4
例子2:结果保存到arr数组
<?php $str = 'name=fdipzone&gender=male&profession=programer&explain=a new programmer'; parse_str($str, $arr); print_r($arr); ?>1
2
3
4
5
1
2
3
4
5
输出:
Array ( [name] => fdipzone [gender] => male [profession] => programer [explain] => a new programmer )1
2
3
4
5
6
7
1
2
3
4
5
6
7
4.获取url的query参数并解析
首先使用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); ?>1
2
3
4
5
6
1
2
3
4
5
6
输出:
Array ( [name] => fdipzone [gender] => male [profession] => programmer [explain] => a new programmer )
相关文章推荐
- php使用http_build_query,parse_url,parse_str创建与解析url
- php使用http_build_query,parse_url,parse_str创建与解析url详解
- php之parse_url 、parse_str 、http_build_query
- parse_str与http_build_query的使用
- PHP使用http_build_query()构造URL字符串的方法(可将POST参数组转换拼接成GET请求链接)
- parse_str与http_build_query的使用
- php使用parse_url和parse_str解析URL
- PHP URL处理关键函数parse_url、parse_str与http_build_query
- php使用parse_url和parse_str解析URL
- PHP的parse_str() 函数 和http_build_query()函数
- PHP使用http_build_query()构造URL字符串的方法
- php使用parse_url和parse_str解析URL
- php使用parse_url和parse_str解析URL
- 写给Lewis的-URL处理几个关键的函数parse_url、parse_str与http_build_query
- parse_str与http_build_query的使用
- URL处理两个关键的函数parse_str与http_build_query
- parse_str()和http_build_query()的使用
- URL处理几个关键的函数parse_url、parse_str与http_build_query
- PHP使用http_build_query()构造URL字符串的方法
- php 使用pathinfo(), parse_url(), basename()解析URL