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 影响,会根据条件进行字符转义。