정의 및 사용 방법
- PHP 버전
- 4+
htmlspecialchars()
함수는
HTML에서 코드로 인식하게 하여 특별한 의미를 가지고 있는 예약된 일부 특수 문자를 화면에서 제대로 표시할 수 있도록 HTML 엔디티(entities)로 변환합니다.
HTML에는 일부 문자가 HTML 코드에서 일반 문자로 사용할 수 없고, 코드로만 사용하도록 예약된 문자가 있습니다. 이러한 특수한 의미의 문자를 'HTML 예약어'라고 합니다.
이러한 특수 문자들은 HTML 문서에서 특정한 역할을 수행하거나 특수한 표현을 나타내기 위해 사용됩니다.
<
: HTML 태그의 시작을 나타내는 역할을 합니다.>
: HTML 태그의 끝을 나타내는 역할을 합니다.&
: HTML 엔티티를 시작하는 신호로 사용되며, 특수 문자를 나타내기 위해 함께 사용됩니다.""
: 쌍따옴표. HTML 속성 값의 시작과 끝을 나타내는 역할을 합니다.''
: 홑따옴표. HTML 속성 값의 시작과 끝을 나타내는 역할을 합니다.
htmlspecialchars()
함수는 이 다섯 가지 문자를 HTML 엔디티(entities)로 변환합니다.
이렇게 하면 예약된 문자와의 충돌을 피하여 화면에 안전하게 출력할 수 있습니다. 화면에서는 변환된 엔티티가 원래 모습의 문자처럼 출력됩니다.
원래 문자 | 변환 후 엔티티 |
---|---|
< |
< |
> |
> |
& |
& |
" |
" |
' |
' 또는 ' |
이러한 예약된 문자를 HTML 엔디티(entities)로 변환해야 하는 이유는 HTML 특수 문자 사용법과 의의 – 예약된 문자와의 충돌을 피하며 웹 콘텐츠 작성하기에서 자세히 설명하고 있습니다.
주의하세요!
htmlspecialchars()
함수는 HTML에서 코드로 인식되는 예약 문자만 엔티티로 변환합니다.
따라서 모든 보안 관련 특수 문자를 처리하지 않으므로, 보안 목적으로만 사용하기에는 적합하지 않습니다.
htmlspecialchars()
함수를 사용하면 HTML에서 코드로 인식하는 예약된 문자와의 충돌을 피하여 해당 문자들을 화면에서 제대로 표시할 수 있습니다.
기본 예제
$str = '<p> 태그에 대해 알아보겠습니다.';
echo htmlspecialchars($str);
구문
htmlspecialchars(
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 로 변경되었습니다. |
---|
예제
$str = 'htmlspecialchars() 함수는 <, >, &, ", \'를 안전하게 출력할 수 있도록 HTML 엔디티(entities)로 변환합니다.';
echo htmlspecialchars($str);