Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP htmlentities() 함수 완벽 가이드 – HTML 엔티티 변환 방법

PHP의 htmlentities() 함수는 문자열 내에서 HTML 엔티티로 변환할 수 있는 모든 문자를 해당 HTML 엔티티로 바꾸는 데 사용됩니다. 예를 들어 <> 같은 특수 문자는 각각 &lt;, &gt; 형태로 변환되어 브라우저에서 코드가 아닌 일반 텍스트로 표시됩니다.

문법(Syntax)

htmlentities(str, flags, character-set, double_encode)

매개변수(Parameters)

  • str − 변환할 대상 문자열입니다.

  • flags − 따옴표 처리 방식, 잘못된 인코딩 처리 방법, 그리고 사용 중인 문서 타입(doctype)을 지정합니다.

  • 사용 가능한 따옴표 스타일은 다음과 같습니다.

    • ENT_COMPAT − 기본값입니다. 큰따옴표(double quotes)만 인코딩합니다.

    • ENT_QUOTES − 큰따옴표와 작은따옴표(single quotes)를 모두 인코딩합니다.

    • ENT_NOQUOTES − 어떤 따옴표도 인코딩하지 않습니다.

  • 잘못된 인코딩(invalid encoding) 관련 플래그는 다음과 같습니다.

    • ENT_IGNORE − 빈 문자열을 반환하는 대신 유효하지 않은 인코딩을 무시합니다. 보안상 문제가 발생할 수 있으므로 사용을 피하는 것이 좋습니다.

    • ENT_SUBSTITUTE − 빈 문자열을 반환하는 대신, 지정된 문자 집합에 유효하지 않은 인코딩을 유니코드 대체 문자 U+FFFD(UTF-8) 또는 &#FFFD;로 교체합니다.

    • ENT_DISALLOWED − 지정된 doctype에서 허용되지 않는 코드 포인트를 유니코드 대체 문자 U+FFFD(UTF-8) 또는 &#FFFD;로 교체합니다.

  • 사용할 doctype을 지정하는 추가 플래그는 다음과 같습니다.

    • ENT_HTML401 − 기본값입니다. 코드를 HTML 4.01로 처리합니다.

    • ENT_HTML5 − 코드를 HTML 5로 처리합니다.

    • ENT_XML1 − 코드를 XML 1로 처리합니다.

    • ENT_XHTML − 코드를 XHTML로 처리합니다.

  • character-set − 사용할 문자 집합(character set)을 지정합니다.

  • 허용되는 값은 다음과 같습니다.

    • UTF-8 − 기본값입니다. ASCII 호환 멀티바이트 8비트 유니코드입니다.

    • ISO-8859-1 − 서유럽(Western European) 문자 집합입니다.

    • ISO-8859-15 − 서유럽 문자 집합으로, ISO-8859-1에 없던 유로(Euro) 기호와 프랑스어·핀란드어 문자가 추가되어 있습니다.

    • cp866 − DOS 전용 키릴(Cyrillic) 문자 집합입니다.

    • cp1251 − Windows 전용 키릴 문자 집합입니다.

    • cp1252 − Windows용 서유럽 문자 집합입니다.

    • KOI8-R − 러시아어 문자 집합입니다.

    • BIG5 − 번체자(Traditional Chinese)로, 주로 대만에서 사용됩니다.

    • GB2312 − 간체자(Simplified Chinese) 국가 표준 문자 집합입니다.

    • BIG5-HKSCS − 홍콩 확장이 포함된 Big5입니다.

    • Shift_JIS − 일본어 문자 집합입니다.

    • EUC-JP − 일본어 문자 집합입니다.

    • MacRoman − Mac OS에서 사용되었던 문자 집합입니다.

  • double_encode − 이미 존재하는 HTML 엔티티를 다시 인코딩할지 여부를 결정하는 불리언(boolean) 값입니다.

    • TRUE − 기본값입니다. 모든 것을 변환합니다.

    • FALSE − 기존에 존재하는 HTML 엔티티는 인코딩하지 않습니다.

반환값(Return)

htmlentities() 함수는 변환이 완료된 문자열을 반환합니다.

예제(Example)

다음은 htmlentities() 함수의 사용 예시입니다.

<?php
$s = "Cricket is a 'religion' in <b>India</b>";
echo htmlentities($s);
echo htmlentities($s, ENT_QUOTES);
?>

출력 결과(Output)

Cricket is a 'religion' in <b>India</b>Cricket is a 'religion' in <b>India</b>

위 예제에서 첫 번째 호출은 기본 옵션(ENT_COMPAT)으로 실행되어 작은따옴표가 그대로 유지되고, 두 번째 호출은 ENT_QUOTES 옵션을 사용하여 작은따옴표까지 함께 인코딩됩니다. 이처럼 htmlentities() 함수는 사용자 입력을 화면에 출력할 때 XSS 공격 등을 방지하는 데 유용하게 활용됩니다.