정의 및 사용 방법
- PHP 버전
- 4.3+
html_entity_decode()
함수는 주어진 문자열에서 HTML에 정의된 모든 특수 문자의 엔티티(entities)를 해당 문자로 디코딩합니다.
이 함수는 HTML에 정의된 모든 특수 문자를 엔티티로 변환하는 htmlentities()
함수의 반대 개념입니다.
HTML에 정의된 모든 특수 문자는 'HTML Named Character References'를 의미하며, 자세한 목록은 HTML 표준 문서에서 확인할 수 있습니다.
기본 예제
$str = '<, >, &, ", ', ©, ™ 등을 해당 문자로 디코딩합니다.';
$decode = html_entity_decode($str);
var_dump($decode);
string(66) "<, >, &, ", ', ©, ™ 등을 해당 문자로 디코딩합니다."
htmlspecialchars_decode()
함수는 엔티티(entities)로 인코딩된 다섯 개의 HTML 예약 문자(<
, >
, &
, "
, '
)만을 디코딩하지만, html_entity_decode()
함수는 이 다섯 개의 HTML 예약 문자 이외에도 이름 엔티티가 정의된 목록(HTML Named Character References)에 있는 나머지 문자들(예: ©
, €
, ™
등)을 추가로 디코딩한다는 차이점이 있습니다.
구문
html_entity_decode(
string $string,
int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
?string $encoding = null
): string
매개변수
$string |
필수. 디코딩하려는 원본 문자열입니다. |
---|---|
$flags |
옵션. 디코딩 시 동작 방식을 지정하는 상수 옵션입니다. 여러 옵션은 | (비트 OR) 연산자로 결합 가능합니다. 기본값: ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401
|
$encoding |
옵션. 입력 문자열 인코딩을 지정합니다. 이 값에 따라 디코딩 가능한 엔티티의 범위가 결정됩니다. 기본값은 null 이며, 이 경우 php.ini 파일의 default_charset 설정을 따릅니다. 대부분의 경우 'UTF-8' 을 명시적으로 지정하는 것이 좋습니다. 지원하는 값은 다음과 같습니다.
|
반환 값
디코딩된 문자열을 반환합니다.
변경 이력
PHP 8.1.0부터 | $flags 가 ENT_COMPAT 에서 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 로 변경되었습니다. |
---|---|
PHP 8.0.0부터 | $encodng 은 이제 null 값을 가길 수 있습니다. |
활용 예제
$str = '<p>는 "문단" 요소입니다. ©, ™ 엔티티도 포함하고 있습니다.';
echo html_entity_decode($str);
// 출력: <p>는 "문단" 요소입니다. ©, ™ 엔티티도 포함하고 있습니다.
echo html_entity_decode($str, ENT_NOQUOTES);
// 출력: <p>는 "문단" 요소입니다. ©, ™ 엔티티도 포함하고 있습니다.
같이 보기
- PHP htmlentities() 함수 – HTML 엔티티로 변환 가능한 모든 문자를 인코딩
- PHP htmlspecialchars() 함수 – HTML의 예약된 특수문자를 엔티티로 변환
- PHP htmlspecialchars_decode() 함수 – 인코딩된 HTML 예약 문자를 디코딩
- PHP strip_tags() 함수 – 문자열에서 HTML 태그 제거
- PHP str_replace() 함수 – 문자열을 다른 문자열로 교체
- PHP preg_replace() 함수 – 정규식으로 문자열을 교체
- PHP sprintf() 함수 – 특정 형식으로 문자열 만들기
- HTML 태그 소개
- HTML 특수 문자 코드표 – 특수기호, 엔티티, 문자 인코딩 코드 정리
- 웹 페이지에서 이모지(이모티콘) 사용하기
- 자바스크립트 replace() 함수 – 문자열을 다른 문자열로 교체
- 자바스크립트 replaceAll() 함수 – 문자열을 다른 문자열로 모두 교체