정의 및 사용 방법
- PHP 버전
- 4+
htmlentities()
함수는 주어진 문자열에서 HTML에 정의된 모든 특수 문자를 엔티티(entities)로 변환합니다.
HTML에 정의된 모든 특수 문자는 표준화된 'HTML Named Character References'를 의미하며, 자세한 목록은 HTML 표준 문서에서 확인할 수 있습니다.
이 함수는 주로 HTML에서 특수 문자들을 화면에서 제대로 표현하기 위해 사용됩니다.
특수 문자를 HTML 엔티티(entities)로 변환해야 하는 이유는 예약된 문자와의 충돌을 피하고, 웹 콘텐츠를 안전하고 일관되게 출력하기 위함이며, 자세한 내용은 HTML 특수 문자 사용법과 의의 – 예약된 문자와의 충돌을 피하며 웹 콘텐츠 작성하기에서 설명하고 있습니다.
주의하세요!
htmlentities()
함수는 HTML에 정의된 예약 문자와 특수 문자만 엔티티로 변환합니다.
따라서 HTML 엔티티로 정의되지 않은 특수 문자(예: [
, ]
, ^
, {
, }
등)를 포함한 보안 관련 입력(예: SQL 구문, 일부 XSS 공격 코드 등)은 변환되지 않으므로, 보안 목적으로 사용하는 것은 안전하지 않습니다.
기본 예제
$str = 'htmlentities() 함수는 <, >, &, ", \', ©, ™ 등을 HTML 엔티티(entities)로 변환합니다.';
$encode = htmlentities($str);
var_dump($encode);
htmlspecialchars()
함수는 HTML에서 코드로 인식하게 하여 특별한 의미를 가지고 있는 다섯 개의 HTML 예약 문자(<
, >
, &
, "
, '
)만을 인코딩하지만, htmlentities()
함수는 이 다섯 개의 HTML 예약 문자 이외에도 이름 엔티티가 정의된 목록(HTML Named Character References)에 있는 나머지 문자들(예: ©
, €
, ™
등)을 추가로 인코딩한다는 차이점이 있습니다.
구문
htmlentities(
string $string,
int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
?string $encoding = null,
bool $double_encode = true
): string
매개변수
$string |
필수. 변환하려는 원본 문자열입니다. |
---|---|
$flags |
옵션. 어떤 따옴표를 HTML 엔티티로 변환할지 등, 함수의 동작 방식을 지정하는 상수 옵션입니다. 여러 옵션을 함께 사용하려면 | (비트 OR) 연산자를 사용합니다. 옵션은 다음과 같습니다.
|
$encoding |
옵션. 입력 문자열의 인코딩을 지정합니다. 기본값은 null 이며, 이 경우 php.ini 파일의 default_charset 설정을 따릅니다. 대부분의 경우 'UTF-8' 을 명시적으로 지정하는 것이 좋습니다. 지원하는 값은 다음과 같습니다.
|
$double_encode |
옵션. 이미 HTML 엔티티로 변환된 문자열을 다시 변환할지 여부를 결정합니다. 기본값은 true 입니다.
|
반환 값
인코딩된 문자열을 반환합니다.
변경 이력
버전 | 설명 |
---|---|
8.1.0 | $flags 가 ENT_COMPAT 에서 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 로 변경되었습니다. |
8.0.0 | $encodng 은 이제 null 값을 가질 수 있습니다. |
활용 예제
$str = '<script>alert("\n,;[]")</script>';
echo htmlentities($str);
var_dump($encoded);
// 출력: string(52) "<script>alert("\n,;[]")</script>"
같이 보기
- PHP html_entity_decode() 함수 – HTML에 정의된 엔티티를 디코딩
- PHP htmlspecialchars() 함수 – HTML의 예약된 특수문자를 엔티티로 변환
- PHP htmlspecialchars_decode() 함수 – 인코딩된 HTML 예약 문자를 디코딩
- PHP strip_tags() 함수 – 문자열에서 HTML 태그 제거
- PHP str_replace() 함수 – 문자열을 다른 문자열로 교체
- PHP preg_replace() 함수 – 정규식으로 문자열을 교체
- PHP sprintf() 함수 – 특정 형식으로 문자열 만들기
- HTML 특수 문자 코드표 – 특수기호, 엔티티, 문자 인코딩 코드 정리
- 자바스크립트 replace() 함수 – 문자열을 다른 문자열로 교체
- 자바스크립트 replaceAll() 함수 – 문자열을 다른 문자열로 모두 교체