经过几年的采集和夸服务器的鞭策工作,自以为curl是很熟了,想不到这次又被坑了下。

这次跟对方公司合作,需要post大量数据过去。从html表单提交成功后,后面用curl ,,file_get_contents(),fsocketopen()都post不了数据过去,最后用我的啊里云远程测试下,妈蛋,全都是乱码。最后又测试了一番,最后用上了http_build_query这个函数解决这个乱码问题。

Example #1http_build_query()使用示例

<?php
$data=array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertextprocessor');

echohttp_build_query($data);//foo=bar&baz=boom&cow=milk&php=hypertext+processor
?>

Example #2http_build_query()使用数字下标的元素

<?php
$data=array('foo','bar','baz','boom','cow'=>'milk','php'=>'hypertextprocessor');

echohttp_build_query($data);
/*输出:
0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor
*/

echohttp_build_query($data,'myvar_');
/*输出:
myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hypertext+processor
*/
?>

Example #3http_build_query()使用复杂的数组

<?php
$data=array('user'=>array('name'=>'BobSmith',
'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');

echohttp_build_query($data,'flags_');
?>