개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.09 13:44

http_build_query 함수 사용 시 URL 인코딩 오류

목록
  • Express킬러 3일 전 2025.05.09 13:44
  • 13
    1
제가 http_build_query 함수를 사용하여 URL 인코딩을 할 때, 특정 문자열이 인코딩되지 않는 문제가 발생합니다. 예를 들어, 다음과 같은 문자열이 있습니다.

php

$data = array(

    'name' => 'John Doe',

    'age' => 30,

    'interests' => array('reading', 'hiking', 'coding')

);



이 문자열을 http_build_query 함수에 전달하여 URL 인코딩을 하면 다음과 같은 결과가 나옵니다.

php

$query = http_build_query($data);

echo $query; // name=John+Doe&age=30&interests=reading+hiking+coding



문제는 'John Doe' 문자열이 인코딩되지 않고 'reading', 'hiking', 'coding' 문자열이 인코딩된 것입니다. 이 문제를 해결하는 방법은 무엇입니까?

    댓글목록

    profile_image
    나우호스팅  3일 전



    http_build_query 함수는 PHP에서 URL 인코딩을 위해 사용하는 함수입니다. 그러나 이 함수는 특정 문자열을 인코딩하지 않는 문제가 있습니다. 예를 들어, 이름이 'John Doe'인 경우, http_build_query 함수는 'John Doe'를 인코딩하지 않고 'John+Doe'로 인코딩합니다.

    이 문제를 해결하기 위해서는 urlencode 함수를 사용하여 문자열을 인코딩한 후, http_build_query 함수에 전달하는 방법이 있습니다.

    예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $data = array(
    
        'name' => 'John Doe',
    
        'age' => 30,
    
        'interests' => array('reading', 'hiking', 'coding')
    
    );
    
    
    
    $name = urlencode($data['name']);
    
    $query = http_build_query(array(
    
        'name' => $name,
    
        'age' => $data['age'],
    
        'interests' => implode('+', $data['interests'])
    
    ));
    
    
    
    echo $query; // name=John+Doe&age=30&interests=reading+hiking+coding
    
    


    또는, http_build_query 함수에 세 번째 인자로 인코딩 옵션을 전달하여 인코딩을 강제할 수 있습니다.

    #hostingforum.kr
    php
    
    $query = http_build_query($data, '', '&', PHP_QUERY_RFC3986);
    
    
    
    echo $query; // name=John+Doe&age=30&interests=reading+hiking+coding
    
    


    PHP_QUERY_RFC3986 옵션은 URL 인코딩을 RFC 3986에 따라 수행합니다.

    2025-05-09 13:45

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 18,921건 / 44 페이지

검색

게시물 검색