update : 2015.11.03
php.shukuma.com

검색:
 
 
모든 HTML 엔티티를 해당하는 문자로 변환

html_entity_decode

(PHP 4 >= 4.3.0, PHP 5)

html_entity_decode모든 HTML 엔티티를 해당하는 문자로 변환

설명

string html_entity_decode ( string $string [, int $quote_style [, string $charset ]] )

html_entity_decode()string의 모든 HTML 엔티티를 해당하는 문자로 변환합니다. htmlentities()의 역함수입니다.

인수

string

입력 문자열.

quote_style

선택적인 두번째 인수 quote_style은 '홑따옴표'와 "겹따옴표"를 어떻게 처리할지 정의합니다. 아래의 상수들을 사용할 수 있으며, 기본값은 ENT_COMPAT입니다:

사용할 수 있는 quote_style 상수
상수명 설명
ENT_COMPAT 겹따옴표만 변환합니다.
ENT_QUOTES 홑따옴표와 겹따옴표 모두 변환합니다.
ENT_NOQUOTES 홑따옴표와 겹따옴표 모두 변환하지 않습니다.

charset

선택적인 세번째 인수 charset의 기본값은 ISO-8859-1 문자셋입니다. 변환에 사용할 문자셋을 정의합니다.

PHP 4.3.0 이상에서 다음 문자셋을 지원합니다.

지원 문자셋
문자셋 다른 이름 설명
ISO-8859-1 ISO8859-1 서부 유럽어, Latin-1.
ISO-8859-15 ISO8859-15 서부 유럽어, Latin-9. 유로 사인, Latin-1(ISO-8859-1)에 빠진 프랑스어와 핀란드어 문자 추가.
UTF-8   아스키 호환 멀티바이트 8비트 유니코드.
cp866 ibm866, 866 DOS-특정 키릴 문자셋. 이 문자셋은 4.3.2부터 지원합니다.
cp1251 Windows-1251, win-1251, 1251 윈도우-특정 키릴 문자셋. 이 문자셋은 4.3.2부터 지원합니다.
cp1252 Windows-1252, 1252 윈도우 특정 서부 유럽어 문자셋
KOI8-R koi8-ru, koi8r 러시아어. 이 문자셋은 4.3.2부터 지원합니다.
BIG5 950 중국어 번체, 주로 대만에서 사용.
GB2312 936 중국어 간체, 국가 표준 문자셋.
BIG5-HKSCS   홍콩 확장을 포함한 Big5, 중국어 번체.
Shift_JIS SJIS, 932 일본어.
EUC-JP EUCJP 일본어.

Note: 다른 문자셋에 대해서는 ISO-8859-1을 사용합니다.

반환값

디코드한 문자열을 반환합니다.

변경점

버전 설명
5.0.0 멀티바이트 문자셋 지원 추가.

예제

Example #1 HTML 엔티티 디코딩

<?php
$orig 
"I'll \"walk\" the <b>dog</b> now";

$a htmlentities($orig);

$b html_entity_decode($a);

echo 
$a// I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b// I'll "walk" the <b>dog</b> now


// PHP 4.3.0 이전 사용자는 이렇게 할 수 있습니다:
function unhtmlentities($string)
{
    
// 숫자 엔티티 치환
    
$string preg_replace('~&#x([0-9a-f]+);~ei''chr(hexdec("\\1"))'$string);
    
// 문자 엔티티 치환
    
$trans_tbl get_html_translation_table(HTML_ENTITIES);
    
$trans_tbl array_flip($trans_tbl);
    return 
strtr($string$trans_tbl);
}

$c unhtmlentities($a);

echo 
$c// I'll "walk" the <b>dog</b> now

?>

주의

Note:

trim(html_entity_decode('&nbsp;'));는 문자열을 빈 문자열로 변환하지 않습니다. 이는 기본값인 ISO-8859-1 문자셋에서 '&nbsp;' 엔티티가 (trim()에서 잘라내는) 아스키 코드 32가 아닌, 아스키 코드 160(0xa0)이기 때문입니다.

참고