HOWTO · PHP

PHP의 URL 인코딩

오늘 포스트에서는 PHP에서 URL을 인코딩하는 방법에 대해 알아보겠습니다.

이 페이지의 내용

URL에는 다른 사람의 전체 이름, 다른 리디렉션 URL 또는 비밀번호와 같은 경로 및 쿼리 매개변수가 있을 수 있습니다. 여기에는 공백이나 $ & : /와 같은 문자와 같은 ASCII 세트 외부의 특수 문자가 포함될 수 있습니다.

따라서 URL은 인터넷을 통해 전송되기 전에 합법적인 ASCII 형식으로 다시 생성되어야 합니다. 그렇지 않으면 HTTP 프로토콜을 방해할 수 있습니다.

오늘 포스트에서는 PHP에서 URL을 인코딩하는 방법에 대해 알아보겠습니다.

PHP는 URL을 인코딩하는 2가지 기능을 제공합니다.

urlencode()를 사용하여 PHP에서 URL 인코딩

URL을 인코딩하는 데 사용되는 PHP에서 제공하는 내장 함수입니다. 이 함수는 안전하지 않은 ASCII 문자를 % 다음에 2개의 16진수 숫자로 대체합니다. 이 기능은 application/x-www-form-urlencoded에 따라 인코딩합니다. URL은 공백을 포함할 수 없으므로 이 기능은 공백을 더하기 + 기호로 대체합니다. 특수 문자는 미리 정의된 일부 규칙에 따라 매우 구체적인 형식으로 재생성됩니다.

urlencode() 구문

urlencode(string $input);

매개변수

$input: 인코딩이 수행되는 문자열 입력 URL만 사용하는 필수 매개변수입니다.

반환 값

-_.를 제외하고 영숫자가 아닌 모든 문자를 포함하는 문자열을 반환합니다. 이 문자는 % 기호로 대체되고 2개의 16진수가 뒤따릅니다.

예제 코드:

<?php
    echo urlencode("https://www.google.co.in/") . "\n";
    echo urlencode("https://www.google.com/") . "\n";
?>

출력:

https%3A%2F%2Fwww.google.co.in%2F
https%3A%2F%2Fwww.google.com%2F

rawurlencode()를 사용하여 PHP에서 URL 인코딩

RFC 3986에 따라 주어진 URL(Uniform Resource Locator) 문자열을 인코딩할 수 있는 PHP에서 제공하는 내장 함수입니다. 일반 Percent-Encoding에 따라 인코딩합니다. 리터럴 문자가 특수 URL 구분 기호로 해석되는 것을 방지하고 문자 변환(일부 이메일 시스템과 같은)이 있는 전송 미디어에 의해 URL이 손상되는 것을 방지하는 데 사용됩니다.

기호 또는 공백 문자는 퍼센트(%) 기호와 2개의 16진수로 대체됩니다.

rawurlencode() 구문

rawurlencode(string $input);

매개변수

$input: 인코딩이 수행되는 문자열 입력 URL만 취하는 필수 매개변수입니다.

반환 값

-_.~ 기호를 제외한 모든 영숫자가 아닌 문자를 포함하는 인코딩된 문자열을 반환합니다.

예제 코드:

<?php
   echo '<a href="http://testdomain.com/', rawurlencode('subscribers and admins/India'), '">';
?>

출력:

<a href="http://testdomain.com/subscribers%20and%20admins%2FIndia">

urlencode()rawurlencode() 함수의 유일한 차이점은 먼저 공백을 +로 인코딩하고 나중에 %20으로 인코딩한다는 것입니다. 또한 ~urlencode()로 인코딩되지만 rawurlencode()에서는 인코딩되지 않습니다. 쿼리 구성 요소를 인코딩하려면 urlencode()를 사용하고 경로 세그먼트를 인코딩하려면 rawurlencode()를 사용합니다.