PHP의 htmlspecialchars_decode() 함수는 특수 HTML 엔티티를 다시 일반 문자로 변환하는 데 사용됩니다. 이 함수는 htmlspecialchars() 함수와 정반대의 역할을 하며, 인코딩되어 저장된 HTML 코드를 원래 형태로 복원해야 할 때 매우 유용하게 활용됩니다.
디코딩되는 HTML 엔티티
htmlspecialchars_decode() 함수가 변환하는 대표적인 HTML 엔티티는 다음과 같습니다.
&→&(앰퍼샌드)"→"(큰따옴표)'→'(작은따옴표)<→<(보다 작은 부호)>→>(보다 큰 부호)
문법(Syntax)
htmlspecialchars_decode(str, flags)
매개변수(Parameters)
str − 디코딩할 문자열입니다.
flags − 따옴표를 처리하는 방식과 사용할 문서 타입(doctype)을 지정합니다.
따옴표 처리 스타일
ENT_COMPAT − 기본값으로, 큰따옴표만 디코딩합니다.
ENT_QUOTES − 큰따옴표와 작은따옴표를 모두 디코딩합니다.
ENT_NOQUOTES − 어떤 종류의 따옴표도 디코딩하지 않습니다.
문서 타입 관련 추가 플래그
ENT_HTML401 − 기본값으로, 코드를 HTML 4.01로 처리합니다.
ENT_HTML5 − 코드를 HTML 5로 처리합니다.
ENT_XML1 − 코드를 XML 1로 처리합니다.
ENT_XHTML − 코드를 XHTML로 처리합니다.
반환 값(Return)
htmlspecialchars_decode() 함수는 엔티티가 문자로 변환된 문자열을 반환합니다.
예제(Example)
다음 예제는 기본 설정과 ENT_NOQUOTES 플래그를 사용했을 때 결과가 어떻게 달라지는지 보여줍니다.
<?php $s = '<p>this -> "keyword" in programming language</p>'; echo htmlspecialchars_decode($s); echo "\n"; echo htmlspecialchars_decode($s, ENT_NOQUOTES); ?>
위 코드의 실행 결과는 다음과 같습니다.
출력(Output)
<p>this -> "keyword" in programming language</p> <p>this -> "keyword" in programming language</p>
첫 번째 출력에서는 기본 플래그인 ENT_COMPAT에 따라 큰따옴표 엔티티(")까지 함께 디코딩된 것을 확인할 수 있습니다. 반면 두 번째 출력에서는 ENT_NOQUOTES 플래그가 적용되어 따옴표 엔티티는 그대로 유지됩니다. 이처럼 flags 매개변수를 활용하면 따옴표의 디코딩 여부를 세밀하게 제어할 수 있습니다.