개념 및 사용 방법
urlencode()
함수는
URL 쿼리 파라미터의 값으로 사용할 문자열을 인코딩하는데 주로 사용합니다.
특히, 이 함수는 다음 페이지로 전달되는 변수 값을 URL 쿼리 값으로 인코딩할 때 편리합니다.
특징
urlencode()
함수는 주어진 문자열을 URL로 사용할 수 있도록 인코딩합니다.- 공백은 플러스(
+
) 기호로 바꾼다는 특징이 있습니다. - 공백은 플러스(
+
) 기호로 바꾼다는 이 특징은 HTML 폼 데이터를 전송하는 방식, 즉application/x-www-form-urlencoded
미디어 유형과의 호환성 때문입니다. urlencode()
함수는 이러한 HTML 폼 제출 규칙을 따르도록 설계되었습니다. 공백을 플러스(+
)로 인코딩하는 HTML 폼 데이터를 전송 방식과 동일하기 때문입니다.- 이러한 이유로 인해
urlencode()
함수는 URL 쿼리 파라미터의 값으로 사용할 문자열을 인코딩하는데 주로 사용됩니다.
알아두세요!
오랜 기간 동안 PHP 개발자들 사이에서 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'
웹 애플리케이션에서는 사용자로부터 입력을 받아 URL에 포함시켜 다른 페이지로 전달하는 일이 자주 발생합니다.
이때, 쿼리 문자열에 사용되는 값은 공백이나 특수 문자를 포함할 수 있으므로, 올바른 URL을 생성하려면 반드시 인코딩이 필요합니다.
또한 다음 페이지로 변수를 전달할 때도 변수 값에 공백이나 특수 문자가 포함될 수 있으므로, 이를 안전하게 전달하기 위해 urlencode()
함수를 사용하면 편리합니다.
구문
urlencode(string $string): string
매개변수
$string |
URL 인코딩할 문자열입니다.
이 문자열은 함수에 전달되어 URL 인코딩되고 인코딩된 문자열이 반환됩니다. |
---|
반환 값
알파벳 대소문자, 숫자, -
, _
, .
문자를 제외한 모든 문자는 두 개의 16진수 숫자를 뒤따르는 백분율(%
) 기호와 함께 대체됩니다. 또한 공백은 플러스(+
) 기호로 인코딩됩니다.
이 인코딩은 웹 양식으로부터 게시된 데이터와 동일한 방식으로 인코딩됩니다. 즉, application/x-www-form-urlencoded
미디어 유형과 동일한 방식입니다. 브라우저에서 공백을 +
로 해석합니다. 그래서 HTML 양식에서 url를 수집할 때 주로 urlencode()
함수를 많이 사용합니다. HTML 양식에서 수집한 데이터를 URL의 쿼리 문자열에 추가하거나 다른 페이지로 전달하는 경우 적합합니다.
예제
URL과 관련된 urlencode()
함수의 사용 예제입니다.
웹 양식 문자열 인코딩
아래 예제는 웹 양식에서 사용자로부터 문자열을 입력 받아 urlencode()
함수를 사용하여 URL에 추가하는 간단한 예제입니다.
$userinput = 'Data123!@-_ +';
echo "UserInput: $userinput\n";
echo '<a href="mycgi?foo=' . urlencode($userinput) . '">';
/* 출력:
'UserInput: Data123!@-_ +'
'<a href="mycgi?foo=Data123%21%40-_+%2B">'
*/
GET 요청의 쿼리 문자열 인코딩
이 예제는 여러 쿼리 파라미터를 URL에 인코딩하는 방법을 보여주며, GET 요청을 통해 사용자 데이터를 안전하게 전달하는 데 유용합니다.
$name = '홍길동';
$age = 20;
$query_string = 'name=' . urlencode($name) . '&age=' . urlencode($age);
$url = "https://example.com/?$query_string";
echo $url;
// 출력: 'https://example.com/?name=%ED%99%8D%EA%B8%B8%EB%8F%99&age=20'