URL 인코딩 함수 비교
PHP에서 URL 인코딩을 수행하는 함수는 크게 세 가지가 있습니다.
이 함수들은 URL 문자열을 생성하거나 처리하는 데 사용되는 서로 다른 목적과 방법을 제공합니다. 각 함수의 사용 목적과 특징에 대해 알아봅니다.
URL 인코딩 함수별 사용 목적과 특징
각 함수의 사용 목적을 비교하면 다음과 같습니다.
비교 항목 | urlencode() |
rawurlencode() |
http_build_query() |
---|---|---|---|
사용 목적 | URL 쿼리 파라미터의 값으로 사용할 문자열을 인코딩하는데 주로 사용합니다.
특히, 이 함수는 다음 페이지로 전달되는 변수 값을 URL 쿼리 값으로 인코딩할 때 편리합니다. |
URL 전체가 아닌, 개별 URI 구성 요소(예: 검색어, 파일명, 쿼리 파라미터 값 등)를 URI 표준 규격인 RFC 3986에 따라 안전하게 인코딩할 때 사용됩니다. | 배열이나 객체를 URL에서 사용할 수 있는 문자열 형식으로 인코딩하여 쿼리 문자열을 생성하는 함수입니다.
이 함수는 배열이나 객체를 기반으로 HTTP 요청을 생성하거나 URL을 만들 때 매우 유용하게 사용됩니다. |
urlencode()
다음 예제는 URL 쿼리 파라미터의 값으로 사용할 문자열을 인코딩할 때 주로 사용하는 urlencode()
함수의 사용법을 보여줍니다.
// 다음 페이지로 전달할 변수 값
$search = 'hello world!';
// URL 쿼리 값으로 인코딩
$encodedSearch = urlencode($search);
// 인코딩된 값을 쿼리 문자열에 포함
$url = 'https://example.com/search.php?q=' . $encodedSearch;
echo $url;
// 출력: 'https://example.com/search.php?q=hello+world%21'
특징
- 공백은 플러스(
+
) 기호로 바꾼다는 특징이 있습니다. - 공백은 플러스(
+
) 기호로 바꾼다는 이 특징은 HTML 폼 데이터를 전송하는 방식, 즉application/x-www-form-urlencoded
미디어 유형과의 호환성 때문입니다. urlencode()
함수는 이러한 HTML 폼 제출 규칙을 따르도록 설계되었습니다. 공백을 플러스(+
)로 인코딩하는 HTML 폼 데이터를 전송 방식과 동일하기 때문입니다.- 이러한 이유로 인해
urlencode()
함수는 URL 쿼리 파라미터의 값으로 사용할 문자열을 인코딩하는데 주로 사용됩니다.
rawurlencode()
rawurlencode()
함수는 대부분의 특수문자들을 인코딩하기 때문에, 개별 URI 구성 요소(예: 검색어, 파일명, 쿼리 파라미터 값 등)의 데이터를 안전하게 인코딩할 경우에 유용합니다.
$keyword = 'iPhone & Galaxy/Note=100% #1';
$encoded = rawurlencode($keyword);
echo 'https://example.com/search?query=' . $encoded;
// 출력: 'https://example.com/search?query=iPhone%20%26%20Galaxy%2FNote%3D100%25%20%231'
특징
rawurlencode()
함수는 URL에서 프로토콜, 도메인, 경로 구분자(/
,:
,?
,&
,#
) 등 특수한 의미를 갖는 문자들도 RFC 3986의 URI 규격으로 인코딩합니다.- 대부분의 특수문자들을 인코딩하기 때문에, 개별 URI 구성 요소(예: 검색어, 파일명, 쿼리 파라미터 값 등)의 데이터를 안전하게 인코딩할 경우에 유용합니다.
- 한 가지 주의할 점은 공백 문자가
%20
으로 인코딩된다는 것입니다. 반면에urlencode()
함수의 경우에는 공백 문자가+
로 인코딩됩니다. 따라서, 공백 문자를+
로 인코딩해야 하는 상황(일반적으로, HTML 양식에서 수집한 데이터를 URL의 쿼리 문자열에 추가하거나 다른 페이지로 전달하는 경우)에는rawurlencode()
함수를 사용하는 것보다는urlencode()
함수를 사용하는 것이 좋습니다.
http_build_query()
http_build_query()
함수는 배열이나 객체를 URL에서 사용할 수 있는 문자열 형식으로 인코딩하여 쿼리 문자열을 생성하는 함수입니다. 이 함수는 배열이나 객체를 기반으로 HTTP 요청을 생성하거나 URL을 만들 때 매우 유용하게 사용됩니다.
다음은 배열을 기반으로 URL을 만드는 기본 예제입니다.
$data = array(
'name' => 'John Doe',
'age' => 30,
'city' => 'New York'
);
$queryString = http_build_query($data);
echo $queryString;
// 출력: 'name=John+Doe&age=30&city=New+York'
특징
- 문자열을 인코딩하는 것이 아니라,
- 배열이나 객체를 URL에서 사용할 수 있는 문자열 형식으로 인코딩하여 쿼리 문자열을 생성하는 함수입니다.
- 배열이나 객체를 기반으로 HTTP 요청을 생성하거나 URL을 만들 때 매우 유용하게 사용됩니다.
같이 보기
- PHP urlencode() 함수 – 문자열을 URL 인코딩
- PHP rawurlencode() 함수 – RFC 3986에 따른 URL 인코딩
- PHP http_build_query() 함수 – 배열 또는 객체를 URL 인코딩하여 쿼리 문자열 생성
- PHP urlencode()로 인코딩된 URL 디코딩 – urldecode() 함수
- PHP rawurlencode()로 인코딩된 URL 디코딩 – rawurldecode() 함수
- PHP parse_str() 함수 – URL 쿼리 문자열 디코딩, 변수로 구문 분석
- PHP URL 디코딩 함수 비교