URL 디코딩 함수 비교
PHP에서 URL 디코딩을 수행하는 함수는 크게 세 가지가 있습니다.
이 함수들은 인코딩된 URL 문자열을 디코딩하는데 사용하며, 디코딩의 서로 다른 목적과 방법을 제공합니다. 각 함수의 사용 목적과 특징에 대해 알아봅니다.
URL 디코딩 함수별 사용 목적과 특징
각 함수의 사용 목적을 비교하면 다음과 같습니다.
비교 항목 | urldecode() |
rawurldecode() |
parse_str() |
---|---|---|---|
사용 목적 | urlencode() 함수로 인코딩되어 전달된 URL 쿼리 파라미터 값을 복원할 때 주로 사용합니다. |
rawurlencode() 함수로 엄격하게 인코딩되어 전달된 URI 구성 요소(예: 경로 세그먼트, 쿼리 파라미터 값)를 디코딩할 때 주로 사용합니다. |
http_build_query() 함수로 인코딩 된 쿼리 문자열을 디코딩하여 변수로 구문 분석하는데 사용합니다. |
urldecode()
다음 예제는 urlencode()
함수로 인코딩되어 전달된 URL 쿼리 파라미터 값을 복원할 때 사용되는 urldecode()
함수의 사용법을 보여줍니다.
/* urlencode() 함수를 사용하여 URL에서 사용할 수 있는 형식으로 문자열을 인코딩 */
$url = 'https://www.example.com/page.php?name=John Doe';
$encoded_url = urlencode($url);
echo $encoded_url . '<br>';
// 출력: https%3A%2F%2Fwww.example.com%2Fpage.php%3Fname%3DJohn+Doe
/* urlencode()로 인코딩된 URL을 디코딩 */
$decoded_url = urldecode($url);
echo $decoded_url;
// 출력: https://www.example.com/page.php?name=John Doe
특징
- URL로 인코딩된 문자열을 다시 원래의 문자열로 디코딩하는 함수입니다.
urlencode()
함수로 인코딩된 URL을 디코딩하는데 최적화되어 있습니다.- 플러스 기호(
+
)는 공백으로 바꾼다는 특징이 있습니다.
urlencode()
함수는
주어진 문자열을 URL로 사용할 수 있도록 인코딩합니다. 공백을 플러스(+
) 기호로 바꿉니다. urldecode()
함수는 퍼센트 (%
) 기호와 뒤에 있는 두 개의 16진수 숫자로 이어진 인코딩된 문자를 실제 문자로 변환하여 디코딩하고 더하기 기호(+
)는 공백 문자로 디코딩합니다.
rawurldecode()
다음의 예제는 rawurlencode()
함수로 엄격하게 인코딩되어 전달된 URI 구성 요소(예: 경로 세그먼트, 쿼리 파라미터 값)를 디코딩할 때 사용되는 rawurldecode()
함수의 사용법을 보여줍니다.
/* rawurlencode() 함수로 쿼리 파라미터 값을 인코딩 */
$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'
/* urlencode()로 인코딩된 쿼리 파라미터 값을 디코딩 */
$decoded = rawurldecode($encoded);
echo $decoded;
// 출력: 'iPhone & Galaxy/Note=100% #1'
특징
- URL로 인코딩된 문자열을 다시 원래의 문자열로 디코딩하는 함수입니다.
rawurlencode()
함수로 인코딩된 URL을 디코딩하는데 최적화되어 있습니다.%20
은 공백으로 바꾼다는 특징이 있습니다
rawurlencode()
함수는 주어진 문자열을 RFC 3986에 따라 URL에 사용할 수 있도록 인코딩합니다.
RFC 3986은 URL 인코딩을 위한 표준으로, 알파벳 대소문자, 숫자, -
, _
, .
, ~
문자를 제외한 모든 문자는 두 개의 16진수 숫자를 뒤따르는 백분율(%
) 기호와 함께 대체됩니다. 또한 공백은 %20
로 인코딩됩니다.
parse_str()
다음의 예제는 URL에서 사용할 수 있는 형식으로 인코딩된 쿼리 문자열을 디코딩하여 변수로 구문 분석하는 parse_str()
함수의 사용 방법입니다.
// URL에서 사용할 수 있는 문자열 형식으로 인코딩할 배열
$data = array(
'name' => 'John Doe',
'age' => 30,
'city' => 'New York'
);
// http_build_query() 함수를 사용하여 쿼리 문자열로 인코딩
$queryString = http_build_query($data);
echo $queryString; // 출력: name=John+Doe&age=30&city=New+York'
// parse_str() 함수를 사용하여 디코딩
// 구문 분석한 데이터를 두 번째 인자인 $decodedArray에 배열 형태로 저장
parse_str($queryString, $decodedArray);
print_r($decodedArray); // 출력: Array ( [name] => John Doe [age] => 30 [city] => New York )
특징
- 이 함수는 결과를 반환하는 대신, 두 번째 인자로 전달된 변수에 구문 분석한 데이터를 배열 형태로 저장합니다.
- 주로
http_build_query()
함수로 인코딩 된 쿼리 문자열을 디코딩하여 변수로 구문 분석하는데 사용합니다. parse_str()
함수는http_build_query()
함수로 인코딩된 URL 쿼리 문자열을 디코딩하여 키-값 쌍으로 변환하고, 이를 배열 또는 변수에 할당합니다.
http_build_query()
함수는
배열 또는 객체를 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 인코딩 함수 비교