Strings htmlspecialchars

(PHP 4, PHP 5, PHP 7, PHP 8)

htmlspecialchars — 특수 문자를 HTML 엔터티로 변환


설명

htmlspecialchars(
    string $string,
    int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
    ?string $encoding = null,
    bool $double_encode = true
): string
                

특정 문자는 HTML에서 특별한 의미를 가지며 의미를 보존하려면 HTML 엔티티로 표시해야 합니다. 이 함수는 이러한 변환이 수행된 문자열을 반환합니다. 연결된 명명된 엔터티가 있는 모든 입력 하위 문자열을 번역해야 하는 경우 htmlentities()를 대신 사용하십시오.

이 함수에 전달된 입력 문자열과 최종 문서가 동일한 문자 집합을 공유하는 경우 이 함수는 HTML 문서의 대부분의 컨텍스트에 포함될 입력을 준비하기에 충분합니다. 그러나 입력이 최종 문서 문자 집합에 코딩되지 않은 문자를 나타낼 수 있고 해당 문자(숫자 또는 명명된 엔터티로)를 유지하려는 경우 이 함수와 htmlentities() 모두(이는 명명된 엔터티가 있는 하위 문자열만 인코딩합니다) 등가물)이 부족할 수 있습니다. 대신 mb_encode_numericentity()를 사용해야 할 수도 있습니다.

Performed translations

Character Replacement
& (ampersand) &
" (double quote) ", unless ENT_NOQUOTES is set
' (single quote) ' (for ENT_HTML401) or ' (for ENT_XML1, ENT_XHTML or ENT_HTML5), but only when ENT_QUOTES is set
< (less than) &lt;
> (greater than) &gt;

매개변수

string
변환 중인 문자열입니다.
flags
따옴표, 잘못된 코드 단위 시퀀스 및 사용된 문서 유형을 처리하는 방법을 지정하는 다음 플래그 중 하나 이상의 비트 마스크입니다. 기본값은 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.

사용 가능한 flags 상수

상수 이름 설명
ENT_COMPAT 큰따옴표를 변환하고 작은따옴표를 그대로 둡니다.
ENT_QUOTES 큰따옴표와 작은따옴표를 모두 변환합니다.
ENT_NOQUOTES 큰따옴표와 작은따옴표 모두 변환되지 않은 상태로 둡니다.
ENT_IGNORE 빈 문자열을 반환하는 대신 잘못된 코드 단위 시퀀스를 조용히 버립니다. 이 플래그는 » may have security implications을 줄 수 있으므로 사용하지 않는 것이 좋습니다.
ENT_SUBSTITUTE 빈 문자열을 반환하는 대신 잘못된 코드 단위 시퀀스를 유니코드 대체 문자 U+FFFD(UTF-8) 또는 &#xFFFD;(그렇지 않은 경우)으로 교체합니다.
ENT_DISALLOWED 주어진 문서 유형에 대한 유효하지 않은 코드 포인트를 그대로 두는 대신 유니코드 대체 문자 U+FFFD(UTF-8) 또는 &#xFFFD;(그렇지 않은 경우)으로 교체하십시오. 이는 예를 들어 외부 콘텐츠가 포함된 XML 문서의 형식을 잘 유지하는 데 유용할 수 있습니다.
ENT_HTML401 코드를 HTML 4.01로 처리합니다.
ENT_XML1 Handle code as XML 1.
ENT_XHTML Handle code as XHTML.
ENT_HTML5 Handle code as HTML 5.
encoding
문자를 변환할 때 사용되는 인코딩을 정의하는 선택적 인수입니다.

생략하면 encoding은 기본적으로 default_charset 구성 옵션의 값으로 설정됩니다.

이 인수는 기술적으로 선택 사항이지만 지정된 입력에 대해 default_charset 구성 옵션이 잘못 설정될 수 있는 경우 코드에 올바른 값을 지정하는 것이 좋습니다.

이 함수의 목적을 위해, 인코딩 ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252KOI8-Rstring 자체가 인코딩에 유효하다면 사실상 동일합니다. htmlspecialchars()의 영향을 받는 문자는 이러한 모든 인코딩에서 동일한 위치를 차지합니다.

다음 문자 집합이 지원됩니다.

지원되는 문자 집합

Charset Aliases 설명
ISO-8859-1 ISO8859-1 서유럽어, 라틴어-1.
ISO-8859-5 ISO8859-5 거의 사용되지 않는 키릴 문자 집합(라틴어/키릴 문자).
ISO-8859-15 ISO8859-15 서유럽어, 라틴-9. Latin-1(ISO-8859-1)에서 누락된 유로 기호, 프랑스어 및 핀란드어 문자를 추가합니다.
UTF-8   ASCII 호환 멀티바이트 8비트 유니코드.
cp866 ibm866, 866 DOS 전용 키릴 문자 집합입니다.
cp1251 Windows-1251, win-1251, 1251 Windows 전용 키릴 문자 집합입니다.
cp1252 Windows-1252, 1252 서유럽용 Windows 전용 문자 집합입니다.
KOI8-R koi8-ru, koi8r Russian.
BIG5 950 대만에서 주로 사용되는 중국어 번체.
GB2312 936 중국어 간체, 국가 표준 문자 집합입니다.
BIG5-HKSCS   홍콩 확장이 있는 Big5, 중국어 번체.
Shift_JIS SJIS, SJIS-win, cp932, 932 Japanese
EUC-JP EUCJP, eucJP-win Japanese
MacRoman   Mac OS에서 사용하는 문자 집합입니다.
''   빈 문자열은 스크립트 인코딩(Zend 멀티바이트), default_charset 및 현재 로케일(nl_langinfo()setlocale() 참조)에서 이 순서대로 감지를 활성화합니다. 권장하지 않습니다.

참고: 다른 문자 집합은 인식되지 않습니다. 대신 기본 인코딩이 사용되며 경고가 표시됩니다.

double_encode
double_encode가 꺼져 있으면 PHP는 기존 html 엔티티를 인코딩하지 않으며 기본값은 모든 것을 변환하는 것입니다.

반환 값

변환된 문자열입니다.

입력 string에 지정된 encoding 내에서 잘못된 코드 단위 시퀀스가 ​​포함되어 있으면 ENT_IGNORE 또는 ENT_SUBSTITUTE 플래그가 설정되지 않는 한 빈 문자열이 반환됩니다.


변경 로그

버전 설명
8.1.0 flagsENT_COMPAT에서 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401로 변경됨.

Examples

예제 #1 htmlspecialchars() 예제

                  
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>
                  
                

메모

메모: 이 함수는 위에 나열된 것 이상으로 번역하지 않습니다. 전체 엔티티 번역은 htmlentities()를 참조하십시오.

메모:

모호한 flags 값의 경우 다음 규칙이 적용됩니다.

  • ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES가 모두 없으면 기본값은 ENT_NOQUOTES입니다.
  • ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES 중 하나 이상이 존재할 때 ENT_QUOTES가 가장 높은 우선 순위를 가지며 ENT_COMPAT이 그 뒤를 잇습니다.
  • ENT_HTML401, ENT_HTML5, ENT_XHTML, ENT_XML1이 모두 없으면 기본값은 ENT_HTML401입니다.
  • ENT_HTML401, ENT_HTML5, ENT_XHTML, ENT_XML1 중 하나 이상이 있는 경우 ENT_HTML5가 가장 높은 우선 순위를 가지며 ENT_XHTML, ENT_XML1ENT_HTML401이 그 뒤를 잇습니다.
  • ENT_DISALLOWED, ENT_IGNORE, ENT_SUBSTITUTE 중 하나 이상이 있을 때 ENT_IGNORE가 가장 높은 우선 순위를 가지며 ENT_SUBSTITUTE가 그 뒤를 잇습니다.

기타