php http_build_query 不转码,php,http_build_query,乱码
时间: 2023-10-04 16:04:04 浏览: 71
如果你想让 `http_build_query` 不对参数进行 URL 编码,可以在调用函数时传递第二个参数 `null`,如下所示:
```php
$queryString = http_build_query($params, null, '&');
```
其中第二个参数是用于 URL 编码的分隔符,默认为 `&`,如果传递 `null` 则表示不进行 URL 编码。但是需要注意的是,如果你不对参数进行 URL 编码,那么可能会出现乱码或者安全问题,因此建议还是进行 URL 编码。
相关问题
http_build_query 不转义
默认情况下,PHP函数`http_build_query`会将参数中的特殊字符进行URL编码,以保证URL的正确性和安全性。如果你想让`http_build_query`函数不进行转义,可以将第二个参数设置为`null`或者`''`。例如:
```
$data = array('foo' => 'bar', 'baz' => '@!$');
$query_string = http_build_query($data, null, '&', PHP_QUERY_RFC3986);
echo $query_string; // 输出:foo=bar&baz=@!$
```
在上面的例子中,第二个参数被设置为`null`,因此`http_build_query`不会对参数进行转义。第三个参数表示参数之间的分隔符,第四个参数表示使用哪种编码方式进行URL编码。`PHP_QUERY_RFC3986`是一种常用的编码方式,可以保证URL的正确性和安全性。
javascript如何实现php的http_build_query
在 JavaScript 中,可以使用 `URLSearchParams` 对象来实现类似 PHP 中 `http_build_query` 函数的功能,将一个对象转换为 URL 查询参数字符串。
下面是一个示例代码:
```javascript
const params = { foo: 'bar', baz: [1, 2, 3] };
const searchParams = new URLSearchParams(params);
const queryString = searchParams.toString();
console.log(queryString); // "foo=bar&baz=1&baz=2&baz=3"
```
在上面的代码中,我们首先定义了一个包含多个属性的对象 `params`,然后使用 `URLSearchParams` 构造函数将其转换为一个 `URLSearchParams` 对象。最后,调用 `toString` 方法将其转换为查询参数字符串。
需要注意的是,`URLSearchParams` 对象的构造函数接受一个对象作为参数,但是如果对象中包含数组等复杂类型的属性,那么在转换为查询参数字符串时可能会出现问题,需要手动处理。