PHP의 htmlentities() 함수는 문자열 내에서 HTML 엔티티로 변환할 수 있는 모든 문자를 해당 HTML 엔티티로 바꾸는 데 사용됩니다. 예를 들어 <나 > 같은 특수 문자는 각각 <, > 형태로 변환되어 브라우저에서 코드가 아닌 일반 텍스트로 표시됩니다.
문법(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 공격 등을 방지하는 데 유용하게 활용됩니다.