http_build_query妙用
HTTP 妙用 Query build
2023-06-13 09:16:15 时间
http_build_query这个函数可以很方便的构造一个请求所需要的参数。(不分GET,POST)
这个函数可以把一个数组转化为一串字符
栗子1:
<?php
$data = array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');
//第二个参数是分割使用的符号
echo http_build_query($data) . "\n";
echo http_build_query($data, '', '&');
# foo=bar&baz=boom&cow=milk&php=hypertext+processor
# foo=bar&baz=boom&cow=milk&php=hypertext+processor
?>
栗子二:
<?php
$data = array('user'=>array('name'=>'Bob Smith',
'age'=>47,
'sex'=>'M',
'dob'=>'5/12/1956'),
'pastimes'=>array('golf', 'opera', 'poker', 'rap'),
'children'=>array('bobby'=>array('age'=>12,
'sex'=>'M'),
'sally'=>array('age'=>8,
'sex'=>'F')),
'CEO');
//第二个参数,如果数组没有键值,则自动添加键值
echo http_build_query($data, 'flags_');
?>
输出:
user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=M&user%5Bdob%5D=5%2F12%2F1956&pastimes%5B0%5D=golf&pastimes%5B1%5D=opera&pastimes%5B2%5D=poker&pastimes%5B3%5D=rap&children%5Bbobby%5D%5Bage%5D=12&children%5Bbobby%5D%5Bsex%5D=M&children%5Bsally%5D%5Bage%5D=8&children%5Bsally%5D%5Bsex%5D=F&flags_0=CEO
把上面的请求传给一个PHP文件处理,打印传递来的参数,会得到以下结果:
Array
(
[_GET] => Array
(
[user] => Array
(
[name] => Bob Smith
[age] => 47
[sex] => M
[dob] => 5/12/1956
)
[pastimes] => Array
(
[0] => golf
[1] => opera
[2] => poker
[3] => rap
)
[children] => Array
(
[bobby] => Array
(
[age] => 12
[sex] => M
)
[sally] => Array
(
[age] => 8
[sex] => F
)
)
[flags_0] => CEO
)
[_POST] => Array
(
)
[_COOKIE] => Array
(
[PHPSESSID] => 5u7l53inhrl5j1ojmn65ok4k44
)
[_FILES] => Array
(
)
[GLOBALS] => Array
*RECURSION*
)
很神奇吧!
栗子三:(构造HTTP请求)
<?php
$postdata = http_build_query(
array(
'var1' => 'some content',
'var2' => 'doh'
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://example.com/submit.php', false, $context);
?>
这些函数配合起来就可以用file_get_contents构造出一个POST或GET请求了,比CURL方便很多!
相关文章
- Http通过header传递参数_http contenttype
- NanoMQ Newsletter 2022-08|v0.11:MQTT 5.0 + MQTT over QUIC 桥接,新增 HTTP API 监控客户端状态
- 【漏洞预警】Apache HTTP CVE-2021-41773目录穿透
- Go HTTP 编程 | 01 - 使用 http 包创建 Web 服务器
- HTTP 状态码详解
- 万能调试|Python Scrapy框架HTTP代理的配置与调试
- Python HTTP代理的优缺点?芝麻代理豌豆代理熊猫代理讯代理?
- HTTP协议与Tomcat服务器
- HTTP状态码详解
- Gin 如何编写一个接收文件的 HTTP 接口
- http和https区别?
- WordPress 教程:使用 WP_Http 在 WordPress 中发起 HTTP Request
- 了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别详解程序员
- python http上传文件处理示例详解编程语言
- 部署Linux服务器,实现高效安全的HTTP通信(http服务器linux)
- 服务Linux快速启动HTTP服务实现网络分享(linux启动http)
- 服务Linux 下监控HTTP服务的方法(linux监控http)
- AJAX获取和设置HTTP报头消息
- Linux下HTTP抓包实战精要(http抓包linux)
- Linux搭建HTTP代理实现网络自由访问(linux搭建http代理)
- HTTP代理作用
- 深入浅出Mongodb Http: 开箱即用的可扩展性数据库(mongodb http)
- 如何使用Linux搭建一个安全的HTTP服务器(linux搭建http服务器)
- node.js+Ajax实现获取HTTP服务器返回数据