본문 바로가기
개발자 이야기/PHP

http_build_query

by 집사개발자 2024. 6. 21.
반응형

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

댓글