정의 및 사용 방법
htmlentities()
함수는 주어진 문자열에서 HTML 엔티티로 변환 가능한 모든 문자를 인코딩합니다.
이 함수는 주로 HTML에서 특수 문자들을 화면에서 제대로 표현하기 위해 사용됩니다.
이러한 문자를 HTML 엔디티(entities)로 변환해야 하는 이유는 HTML 특수 문자 사용법과 의의 – 예약된 문자와의 충돌을 피하며 웹 콘텐츠 작성하기에서 자세히 설명하고 있습니다.
주의하세요!
htmlentities()
함수는 HTML에서 코드로 인식되는 예약 문자와 일부 특수 문자만 엔티티로 변환합니다.
따라서 모든 보안 관련 특수 문자를 처리하지 않으므로, 보안 목적으로만 사용하기에는 적합하지 않습니다.
기본 예제
$str = '<script>alert(1)</script>';
$encoded = htmlentities($str);
var_dump($encoded);
// 출력: string(37) "<script>alert(1)</script>"
구문
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 입니다.
|
반환 값
인코딩된 문자열을 반환합니다.
변경 이력
PHP 8.1.0부터 | $flags 가 ENT_COMPAT 에서 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 로 변경되었습니다. |
---|---|
PHP 8.0.0부터 | $encodng 은 이제 null 값을 가길 수 있습니다. |
활용 예제
$str = 'htmlentities() 함수는 <, >, &, ", \', © 등을 HTML 엔티티(entities)로 변환합니다.';
echo htmlentities($str);
htmlentities() 함수는 <, >, &, ", ', © 등을 HTML 엔티티(entities)로 변환합니다.