(PHP 4, PHP 5)
urlencode — 문자열을 URL 인코드
이 함수는 URL의 쿼리 부분에 사용할 수 있도록 문자열을 인코드할 때 편리합니다. 다음 페이지로 편하게 변수를 전달할 수 있습니다.
인코드할 문자열.
-_.을 제외한 모든 영숫자가 아닌 문자를 퍼센트(%) 사인에 이어지는 두 16진수로 교체하고 공백은 플러스(+) 사인으로 교체한 문자열을 반환합니다. 이는 WWW 폼에서 인코드한 포스트 데이터, application/x-www-form-urlencoded 매체형과 같은 방식의 인코드입니다. 역사적인 이유로 공백을 더하기 부호(+)로 인코드 하는 점이 » RFC 1738 인코딩(rawurlencode() 참고)과 다릅니다.
Example #1 urlencode() 예제
<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
Example #2 urlencode()와 htmlentities() 예제
<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?foo=' . htmlentities($query_string) . '">';
?>
Note: HTML 엔티티에 매치하는 변수에는 주의를 기울이십시오. &, ©, £ 같은 것은 브라우저에 의해 파싱되어 변수명 대신 엔티티가 사용됩니다. 이는 몇년동안 W3C가 두드러지게 이야기해온 문제입니다. 레퍼런스는 여기에 있습니다: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2.
PHP는 .ini 지시어의 arg_seperator를 통하여 W3C가 제시한 세미콜론 인수 구분자 변경을 지원합니다. 불행하게도 대부분의 유저 에이전트는 폼 데이터를 세미콜론 구분 형태로 전송하지 않습니다. 이를 해결하는 가장 현실적인 방법은 구분자로 &를 사용하는 대신 &를 사용하는 것입니다. 이렇게 하면, PHP의 arg_separator를 변경할 필요가 없습니다. &로 내버려두고, 간단히 htmlentities()나 htmlspecialchars()를 사용하여 URL을 인코드 하십시오.