urlencode()
함수 사용법
urlencode()
함수는
주어진 문자열을 URL로 사용할 수 있도록 인코딩합니다.
공백을 플러스(+
) 기호로 바꿉니다.
urlencode()
함수는 URL의 쿼리 부분에 사용될 문자열을 인코딩할 때 편리하며, 다음 페이지로 변수를 전달하는 편리한 방법으로 사용될 때 편리합니다.
주로 웹 어플리케이션에서 사용자로부터 입력을 수집하고, 그 입력을 URL에 포함시켜 다른 페이지로 전달할 때 사용됩니다.
이때 쿼리 부분에 사용될 문자열은 공백이나 특수 문자를 포함할 수 있으므로 URL 인코딩해서 올바른 URL을 생성해야 합니다. 또한, 다음 페이지로 변수를 전달할 때도, 변수 이름이나 값에 공백이나 특수 문자가 포함될 수 있으니, 이를 URL 인코딩해서 변수를 안전하게 전달해야 합니다.
urlencode()
함수의 형식은 다음과 같습니다.
구문
매개변수
$string |
URL 인코딩할 문자열입니다.
이 문자열은 함수에 전달되어 URL 인코딩되고 인코딩된 문자열이 반환됩니다. |
---|
반환 값
알파벳 대소문자, 숫자, -
, _
, .
문자를 제외한 모든 문자는 두 개의 16진수 숫자를 뒤따르는 백분율(%
) 기호와 함께 대체됩니다. 또한 공백은 플러스(+
) 기호로 인코딩됩니다.
이 인코딩은 웹 양식으로부터 게시된 데이터와 동일한 방식으로 인코딩됩니다. 즉, application/x-www-form-urlencoded 미디어 유형과 동일한 방식입니다. 브라우저에서 공백을 +
로 해석합니다. 그래서 HTML 양식에서 url를 수집할 때 주로 urlencode()
함수를 많이 사용합니다. HTML 양식에서 수집한 데이터를 URL의 쿼리 문자열에 추가하거나 다른 페이지로 전달하는 경우 적합합니다.
주의하세요!
URL에 특수 문자가 포함된 데이터를 처리할 때 rawurlencode()
함수를 사용하는 것이 더 적합할 수 있습니다. 예를 들어, 파일 경로나 쿼리 문자열에서 특수 문자가 포함된 경우 rawurlencode()
함수를 사용하여 데이터를 URL에 안전하게 추가할 수 있습니다. rawurlencode()
함수는 RFC 3986 인코딩 규칙을 따르며, 특수 문자를 URL에서 사용 가능한 형식으로 정확하게 변환합니다. RFC 3986은 URL 인코딩을 위한 표준으로, 공백 문자를 %20
으로 인코딩하고 특수 문자들도 적절하게 대체됩니다. 반면, urlencode()
함수는 공백 문자를 +
로 인코딩합니다. 이는 RFC 3986에 따른 표준이 아니며, 일부 시스템에서 올바르게 인식되지 않을 수 있습니다.
예시 사용법
URL과 관련된 urlencode()
함수의 사용 예제입니다.
웹 양식 문자열 인코딩
아래 예제는 웹 양식에서 사용자로부터 문자열을 입력 받아 urlencode()
함수를 사용하여 URL에 추가하는 간단한 예제입니다.
GET 요청의 쿼리 문자열 인코딩
URL 매개변수를 배열로 처리
이 코드에서는 사용자 정보를 배열로 저장하고, 각 배열 요소를 urlencode()
함수를 사용하여 URL로 인코딩한 다음 http_build_query()
함수를 사용하여 URL 쿼리 문자열로 변환합니다. 이렇게 하면 여러 매개변수를 URL에 안전하게 전달할 수 있습니다.
주의할 점
- 전체 URL 인코딩:
urlencode()
함수는 문자열 내의 모든 문자를 URL 인코딩합니다. 이 함수를 사용할 때는 문자열 전체를 인코딩해야 하며, 개별 문자나 문자열의 일부만 인코딩해서는 안 됩니다. - 공백 처리:
urlencode()
함수는 공백을+
로 인코딩합니다. 이 동작은 HTML 양식과 일치하며, 주로 웹 양식 데이터를 URL에 추가할 때 사용됩니다. 그러나 공백을%20
으로 인코딩하려면rawurlencode()
함수를 사용해야 합니다. - UTF-8 인코딩:
urlencode()
함수는 기본적으로 UTF-8 문자 인코딩을 사용합니다. 대부분의 경우에는 이것이 바람직한 동작이지만, 다른 문자 인코딩을 사용해야 하는 특수한 상황에서는 이를 고려해야 합니다. - URL 규칙 준수:
urlencode()
함수를 사용하여 URL을 생성할 때는 URL 구문 규칙을 준수해야 합니다. 예를 들어, URL에는 허용되지 않는 문자나 예약된 문자가 있을 수 없습니다.