PHP

urlencode - 문자열을 URL 인코드

설명

string urlencode ( string $str )

-_.을 제외한 모든 영숫자가 아닌 문자를 퍼센트(%) 사인에 이어지는 두 16진수로 교체하고 공백은 플러스(+) 사인으로 교체한 문자열을 반환합니다. 이는 WWW 폼에서 인코드한 포스트 데이터, application/x-www-form-urlencoded 매체형과 같은 방식의 인코드입니다. 역사적인 이유로 공백을 플러스(+) 사인으로 인코드 하는 점이 RFC1738 인코딩(rawurlencode() 참고)과 다릅니다. 이 함수는 URL의 쿼리 부분에 사용하는 문자열을 인코딩할 때 편리합니다. 다음과 같이 다음 페이지로 변수를 전달합니다:

Example #1 urlencode() 예제

<?php
echo '<a href="mycgi?foo='urlencode($userinput), '">'
;
?>

주의: HTML 엔티티가 들어있는 변수에는 주의를 기울이십시오. &amp, &copy, &pound 같은 것은 브라우저에 의해 파싱되어 변수명 대신에 엔티티가 사용됩니다. 이는 몇년동안 W3C가 두드러지게 이야기해온 문제입니다. 레퍼런스는 여기에 있습니다: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 PHP는 .ini 지시어의 arg_seperator를 통하여 W3C가 제시한 세미콜론 인수 구분자 변경을 지원합니다. 불행하게도 대부분의 유저 에이전트는 폼 데이터를 세미콜론 구분 형태로 전송하지 않습니다. 이를 해결하는 가장 현실적인 방법은 구분자로 &를 사용하는 대신 &amp;를 사용하는 것입니다. 이렇게 하면, PHP의 arg_separator를 변경할 필요가 없습니다. &로 내버려두고, 간단히 URL을 htmlentities(urlencode($data))를 사용하여 인코드하십시오.

Example #2 urlencode()htmlentities() 예제

<?php
echo '<a href="mycgi?foo='htmlentities(urlencode($userinput)), '">'
;
?>