개념 및 사용 방법
rawurlencode()
함수는
URL 전체가 아닌, 개별 URI 구성 요소(예: 검색어, 파일명, 쿼리 파라미터 값 등)를 URI 표준 규격인 RFC 3986에 따라 안전하게 인코딩할 때 사용됩니다.
기본 예제
$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 구성 요소(예: 검색어, 파일명, 쿼리 파라미터 값 등)의 데이터를 안전하게 인코딩할 경우에 유용합니다.
- 이 함수는
/
,:
,?
,&
,=
등 대부분 특수 문자를 인코딩하기 때문에 실제로 URL 구조가 보존되어야 할 경우, 즉 URL 전체를 인코딩할 때는 적합하지 않습니다. 이 문자들은 URL에서 각각의 구조(프로토콜, 경로, 쿼리, 파라미터 구분 등) 를 정의하는 핵심적인 구분자입니다. 이들 문자는 단순한 특수문자가 아니라 URL 문법 요소입니다. 이걸 전부 인코딩해버리면, 브라우저는 그 문자열을 더 이상 유효한 URL로 해석하지 못합니다. (단, "단순 문자열 데이터로 보관"하거나, "전송용 데이터로만 활용" 한다면 전혀 문제 없습니다. 오히려 이런 용도로는 안전하게 인코딩하는 방식이 됩니다.)
주의하세요!
한 가지 주의할 점은 공백 문자가 %20
으로 인코딩된다는 것입니다. 반면에 urlencode()
함수의 경우에는 공백 문자가 +
로 인코딩됩니다. 따라서, 공백 문자를 +
로 인코딩해야 하는 상황(일반적으로, HTML 양식에서 수집한 데이터를 URL의 쿼리 문자열에 추가하거나 다른 페이지로 전달하는 경우)에는 rawurlencode()
함수를 사용하는 것보다는 urlencode()
함수를 사용하는 것이 좋습니다.
구문
rawurlencode(string $string): string
매개변수
$string |
인코딩할 URL입니다. |
---|
반환 값
알파벳 대소문자, 숫자, -
, _
, .
, ~
문자를 제외한 모든 문자는 두 개의 16진수 숫자를 뒤따르는 백분율(%
) 기호와 함께 대체됩니다. 또한 공백은 %20
로 인코딩됩니다.
이는 리터럴 문자가 특수 URL 구분 기호로 해석되는 것을 방지하고 문자 변환(일부 전자 메일 시스템과 같은)이 있는 전송 매체에 의해 URL이 손상되는 것을 방지하기 위해 RFC 3986에 설명된 인코딩입니다.
예제
rawurlencode()
함수는 주로 정한 요구 사항이나 URL 구문 규칙을 엄격하게 준수해야 하는 경우에 사용합니다. 그렇지 않은 경우에는 대부분 urlencode()
함수를 사용합니다.
rawurlencode()
함수를 사용하여 특정한 요구 사항이나 엄격한 URL 구문 규칙을 준수해야 하는 상황 중 하나는 파일 경로를 URL에 추가할 때입니다. 파일 경로에는 공백이나 특수 문자가 포함될 수 있으며, 이를 URL에 올바르게 추가하려면 rawurlencode()
함수를 사용해야 합니다.
예를 들어, 웹 서버에서 이미지 파일의 경로를 URL에 추가해야 하는 경우를 생각해보겠습니다. 파일 경로에는 공백(''
), 슬래시(/
)와 같은 특수 문자가 포함될 수 있습니다.
$server_url = 'https://www.example.com';
$image_path = '/images/my image.jpg';
// 파일 경로를 URL에 추가할 때 rawurlencode() 함수 사용
$encoded_image_path = rawurlencode($image_path);
$image_url = $server_url . $encoded_image_path;
echo $image_url;
// 출력: https://www.example.com%2Fimages%2Fmy%20image.jpg
위의 예시에서는 파일 경로에 포함된 공백과 슬래시를 rawurlencode()
함수를 사용하여 URL에 안전하게 추가하고, 최종적으로 이미지 URL을 생성합니다. 이렇게 하면 파일 경로의 특수 문자가 URL 규칙을 준수하면서도 웹에서 올바르게 처리됩니다.
이처럼 rawurlencode()
함수는 파일 경로와 같이 URL에 공백이나 특수 문자가 포함된 데이터를 처리해야 할 때 유용하며, 데이터가 URL 규칙을 엄격하게 준수해야 하는 상황에서 사용됩니다.