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) |
< |
> (greater than) |
> |
매개변수
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) 또는 �(그렇지 않은 경우)으로 교체합니다. ENT_DISALLOWED
주어진 문서 유형에 대한 유효하지 않은 코드 포인트를 그대로 두는 대신 유니코드 대체 문자 U+FFFD(UTF-8) 또는 �(그렇지 않은 경우)으로 교체하십시오. 이는 예를 들어 외부 콘텐츠가 포함된 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
,cp1252
및KOI8-R
은string
자체가 인코딩에 유효하다면 사실상 동일합니다. 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 | flags 가 ENT_COMPAT 에서 ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 로 변경됨. |
Examples
예제 #1 htmlspecialchars() 예제
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
메모
메모: 이 함수는 위에 나열된 것 이상으로 번역하지 않습니다. 전체 엔티티 번역은 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_XML1
및ENT_HTML401
이 그 뒤를 잇습니다. -
ENT_DISALLOWED
,ENT_IGNORE
,ENT_SUBSTITUTE
중 하나 이상이 있을 때ENT_IGNORE
가 가장 높은 우선 순위를 가지며ENT_SUBSTITUTE
가 그 뒤를 잇습니다.
기타
- get_html_translation_table() - htmlspecialchars 및 htmlentities에서 사용하는 번역 테이블을 반환합니다.
- htmlspecialchars_decode() - 특수 HTML 엔터티를 다시 문자로 변환
- strip_tags() - 문자열에서 HTML 및 PHP 태그 제거
- htmlentities() - 적용 가능한 모든 문자를 HTML 엔터티로 변환
- nl2br() - 문자열의 모든 줄 바꿈 앞에 HTML 줄 바꿈을 삽입합니다.