我正在寻找PHP函数的名称,以从键值对的数组构建查询字符串。请注意,我在寻找内置的PHP函数来做到这一点,而不是一个自制的(这是所有的谷歌搜索似乎返回)。有一个,我只是不记得它的名字或在php.net上找到它。 IIRC的名字并不那么直观。PHP函数从数组中构建查询字符串
133
A
回答
255
您正在寻找http_build_query()
。
0
我不知道一个内置的功能,但在PECL类http://uk.php.net/manual/en/class.httpquerystring.php
0
Implode将数组合并为你一个字符串,而是使一个SQL查询了凯/值对你”你必须编写你自己的功能。
+0
试过,但它不会工作。我试图建立一个http查询字符串,它需要数组中的键和值,implode不能这样做。 – 2008-12-30 17:00:21
+2
我看到了,不确定你的意思是一个SQL查询字符串还是一个http查询字符串。 – 2008-12-30 21:05:50
22
这里有一个简单的PHP4友好的实现:
/**
* Builds an http query string.
* @param array $query // of key value pairs to be used in the query
* @return string // http query string.
**/
function build_http_query($query){
$query_array = array();
foreach($query as $key => $key_value){
$query_array[] = urlencode($key) . '=' . urlencode($key_value);
}
return implode('&', $query_array);
}
0
但逆这项工作,你可以使用:
void parse_str(str $input, array $output);
//for example:
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
好运。
2
正如除了@thatjuan
的答案。这
更多兼容PHP4版本:
if (!function_exists('http_build_query')) {
if (!defined('PHP_QUERY_RFC1738')) {
define('PHP_QUERY_RFC1738', 1);
}
if (!defined('PHP_QUERY_RFC3986')) {
define('PHP_QUERY_RFC3986', 2);
}
function http_build_query($query_data, $numeric_prefix = '', $arg_separator = '&', $enc_type = PHP_QUERY_RFC1738)
{
$data = array();
foreach ($query_data as $key => $value) {
if (is_numeric($key)) {
$key = $numeric_prefix . $key;
}
if (is_scalar($value)) {
$k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($key) : rawurlencode($key);
$v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($value) : rawurlencode($value);
$data[] = "$k=$v";
} else {
foreach ($value as $sub_k => $val) {
$k = "$key[$sub_k]";
$k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($k) : rawurlencode($k);
$v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($val) : rawurlencode($val);
$data[] = "$k=$v";
}
}
}
return implode($arg_separator, $data);
}
}
相关问题
- 1. 构建多参数查询字符串
- 2. php mysql查询字符串数组
- 3. 从字符串构建数组
- 4. php从字符串值创建函数
- 5. PHP函数从阵列构建查询字符串 - 而不是http建立查询
- 6. 从字符串列表构建查询
- 7. PHP函数从字符串
- 8. 从查询字符串创建PHP Breadcrumbs
- 9. 从SQL查询中构建数组
- 10. PHP:查询函数erron执行更新查询字符串
- 11. Sequelize:其中查询字符串在字符串数组中postgresql
- 12. 如何从PHP数组构建JS数组并返回字符串?
- 13. 查询构建SQL函数
- 14. 从PHP数组中删除字符串?
- 15. PHP字符串数组结构
- 16. 在字符串数组中传递查询字符串值
- 17. 查询函数用字符串创建数据透视表
- 18. 从MySQL查询构建数组
- 19. 是否有PHP函数将查询字符串转换为数组?
- 20. php查询字符串参数
- 21. PHP查询字符串 - 参数复制
- 22. PHP - 从数组字符串字段
- 23. 从字符串创建子串数组
- 24. 转换的查询字符串数组
- 25. Ajax - jQuery,数组查询字符串
- 26. 构建查询字符串链接
- 27. jQuery的构建HTTP查询字符串
- 28. 构建重定向查询字符串
- 29. 从MySQL查询创建数组php
- 30. 从sql查询创建php数组
是的,就是那个。 – 2008-12-30 17:00:55