키 값 쌍의 배열에서 쿼리 문자열을 작성하는 PHP 함수의 이름을 찾고 있습니다. 이 작업을 수행 하기 위해 내장 PHP 기능을 찾고 있습니다 . 홈 브룩 기능이 아닙니다 (Google 검색이 모두 반환되는 것 같습니다). 하나만 있습니다. 이름을 기억하지 못하거나 php.net에서 찾을 수 없습니다. IIRC의 이름은 그렇게 직관적이지 않습니다.
답변
찾고 있습니다 http_build_query()
.
답변
다음은 간단한 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 );
}
답변
@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);
}
}
답변
이 질문은 꽤 오래되었고 PHP의 경우 (현재) 매우 인기있는 PHP 프레임 워크 Laravel에서이를 수행하는 방법이 있습니다.
응용 프로그램에서 경로의 쿼리 문자열을 인코딩하려면 경로 이름 을 지정한 다음 route()
도우미 함수를 다음과 같이 사용하십시오 .
route('documents.list.', ['foo' => 'bar']);
결과는 다음과 같습니다.
http://localhost/documents/list?foo=bar
또한 경로에 경로 세그먼트 매개 변수가있는 경우 매개 변수에도 인수를 /documents/{id}
전달해야합니다 . 그렇지 않으면 기본적으로 첫 번째 매개 변수의 값을 사용합니다.id
route()