반응형
http_build_query 함수는 배열이나 객체를 URL인코딩하여 쿼리문자열로 만드는 함수이다.
인코딩이 되는걸 잊고 해당 값을 또 urlencode해서 두번 인코딩이 되는 불상사가 일어나기도 했다.
http_build_query(
array|object $data,
string $numeric_prefix = "",
?string $arg_separator = null,
int $encoding_type = PHP_QUERY_RFC1738
): string
$data는 쿼리문자열로 만들 배열이나 객체를 입력하면 된다.
$numeric_prefix는 인덱스(변수명)이 숫자로 이루어질 경우 변수명 앞에 붙이는 문자열이다.
$arg_separator는 쿼리문자열을 만들때 각각의 값 사이에 구분할 구문자를 입력한다. url의 경우 &가 사용된다.
$encoding_type은 인코딩 형식을 지정한다. 기본은 'PHP_QUERY_RFC1738'이다.
다른것은 사실 큰 문제가 되지 않는데, urlencode의 문제처럼 기본으로 사용하면 공백이 +로 인코딩이 된다.
잘 모를때는 rawurlencode로 인코딩하여 값들을 그냥 문자열로 구분자를 넣어 만들수 있지만, encoding_type을 변경하여 공백을 +가 아닌 %20으로 인코딩이 가능하다.
마지막 encoding_type값을 'PHP_QUERY_RFC3986'로 지정해주면 공백이 +가 아닌 %20으로 인코딩이 되어 편하게 이용할 수 있다.
반응형
'개발자 이야기 > PHP' 카테고리의 다른 글
URL Encode (0) | 2024.06.21 |
---|
댓글