Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP의 htmlspecialchars_decode() 함수 완벽 가이드 – HTML 엔티티를 원래 문자로 변환

PHP의 htmlspecialchars_decode() 함수는 특수 HTML 엔티티를 다시 일반 문자로 변환하는 데 사용됩니다. 이 함수는 htmlspecialchars() 함수와 정반대의 역할을 하며, 인코딩되어 저장된 HTML 코드를 원래 형태로 복원해야 할 때 매우 유용하게 활용됩니다.


디코딩되는 HTML 엔티티

htmlspecialchars_decode() 함수가 변환하는 대표적인 HTML 엔티티는 다음과 같습니다.

  • && (앰퍼샌드)

  • "" (큰따옴표)

  • '' (작은따옴표)

  • &lt;< (보다 작은 부호)

  • &gt;> (보다 큰 부호)

문법(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 = '&lt;p&gt;this -&gt; &quot;keyword&quot; in programming language&lt;/p&gt;';
echo htmlspecialchars_decode($s);
echo "\n";
echo htmlspecialchars_decode($s, ENT_NOQUOTES);
?>

위 코드의 실행 결과는 다음과 같습니다.

출력(Output)

<p>this -> "keyword" in programming language</p>
&lt;p&gt;this -&gt; &quot;keyword&quot; in programming language&lt;/p&gt;

첫 번째 출력에서는 기본 플래그인 ENT_COMPAT에 따라 큰따옴표 엔티티(&quot;)까지 함께 디코딩된 것을 확인할 수 있습니다. 반면 두 번째 출력에서는 ENT_NOQUOTES 플래그가 적용되어 따옴표 엔티티는 그대로 유지됩니다. 이처럼 flags 매개변수를 활용하면 따옴표의 디코딩 여부를 세밀하게 제어할 수 있습니다.