诺亚方舟

沉淀

http_build_query与query_str

http_build_query与query_str是功能相反的函数,均是处理url中query段。下面是栗子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$str = 'https://www.baidu.com/s?wd=mysql_escape_string&rsv_spt=1&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_pq=a18bc45e00005509&rsv_t=8e34aXQIj%2FnnJ7VPtqacXcS4FOc6ROimvYVA3mjgExhjkqxdqEPxxECb0DTGg3gHiB4o&oq=usrot&inputT=1284&rsv_n=2&rsv_sug3=16&bs=addslashes';
$query_str = parse_url($str);
parse_str($query_str['query'],$out);
print_r($out);
 
//打印结果
Array
(
    [wd] => mysql_escape_string
    [rsv_spt] => 1
    [issp] => 1
    [f] => 8
    [rsv_bp] => 1
    [rsv_idx] => 2
    [ie] => utf-8
    [tn] => baiduhome_pg
    [rsv_enter] => 1
    [rsv_pq] => a18bc45e00005509
    [rsv_t] => 8e34aXQIj/nnJ7VPtqacXcS4FOc6ROimvYVA3mjgExhjkqxdqEPxxECb0DTGg3gHiB4o
    [oq] => usrot
    [inputT] => 1284
    [rsv_n] => 2
    [rsv_sug3] => 16
    [bs] => addslashes
)

注意下,url串经过parse_url后能拿到query段。

反过来,

1
2
3
4
5
6
7
8
$str = 'https://www.baidu.com/s?wd=mysql_escape_string&rsv_spt=1&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_pq=a18bc45e00005509&rsv_t=8e34aXQIj%2FnnJ7VPtqacXcS4FOc6ROimvYVA3mjgExhjkqxdqEPxxECb0DTGg3gHiB4o&oq=usrot&inputT=1284&rsv_n=2&rsv_sug3=16&bs=addslashes';
$query_str = parse_url($str);
parse_str($query_str['query'],$out);
 
echo $query_str['scheme'].'://'.$query_str['host'].$query_str['path'].'?'.$query_str['query'].http_build_query($out);
 
//输出结果
https://www.baidu.com/s?wd=mysql_escape_string&rsv_spt=1&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_pq=a18bc45e00005509&rsv_t=8e34aXQIj%2FnnJ7VPtqacXcS4FOc6ROimvYVA3mjgExhjkqxdqEPxxECb0DTGg3gHiB4o&oq=usrot&inputT=1284&rsv_n=2&rsv_sug3=16&bs=addslasheswd=mysql_escape_string&rsv_spt=1&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_pq=a18bc45e00005509&rsv_t=8e34aXQIj%2FnnJ7VPtqacXcS4FOc6ROimvYVA3mjgExhjkqxdqEPxxECb0DTGg3gHiB4o&oq=usrot&inputT=1284&rsv_n=2&rsv_sug3=16&bs=addslashes[Finished in 0.3s]

这里要对query_str()这个函数补充点容易踩坑的知识,

①,该函数解析出来的query数组会被自动url_decode,也就是说从改函数拿到的参数与url中字符串不完全相同;

②,该函数受magic_quotes_gpc 影响,会根据条件进行字符转义。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>