κ°œλ°œλ…ΈνŠΈ

[php] htmlspecialchars μ—λŸ¬ ν•΄κ²°

🐻곰이🐻 2023. 2. 10.

λͺ©μ°¨ο„ƒ

728x90

μ—‘μ…€νŒŒμΌ λ‹€μš΄λ°›κ³ λ‚˜μ„œ 파일이 ν™•μž₯μžκ°€ λ°”λ€Œμ—ˆλ‹€κ³  λ‚˜μ˜¨μ¦μƒ.

 

ν™•μΈν•΄λ³΄λ‹ˆ

htmlspecialchars(): charset `utf8' not supported, assuming utf-8 in

μ—λŸ¬κ°€ λ‚˜μ™€μžˆμ—ˆλ‹€.

 

λ‚΄μž₯ ν•¨μˆ˜μ •μ˜

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

 

charset `utf8'  μ—λŸ¬κ°™μ€κ²½μš° λ²ˆμ—­ν•΄λ³΄λ©΄ λ¬Έμžμ—΄ 셋이 utf8지원을 ν•˜μ§€μ•ŠλŠ”λ‹€.

 

이럴경우 λ¬Έμžμ—΄μ„ μ •μ˜λ₯Ό ν•΄μ£ΌλŠ”κ²ƒμ΄ μ’‹λ‹€.

 

μˆ˜μ • μ „.

<?php
	htmlspecialchars($contents ?? '')
?>

 

μˆ˜μ • ν›„

 

<?php
	htmlspecialchars($contents, ENT_SUBSTITUTE, 'ISO-8859-1');
?>

 

μ°Έμ‘° μ‚¬μ΄νŠΈ

https://www.php.net/manual/en/function.htmlspecialchars.php

 

PHP: htmlspecialchars - Manual

One MUST specify ENT_HTML5 in addition to double_encode=false to avoid double-encoding.The reason is that contrary to the documentation, double_encode=false will NOT unconditionally and globally prevent double-encoding of ALL existing entities. Crucially,...

www.php.net

쀑간에 λ“€μ–΄κ°„ ENT_SUBSTITUTE μ˜λ―Έν•˜λŠ”κ²ƒμ€

μœ νš¨ν•˜μ§€ μ•Šμ€ μ½”λ“œ λ‹¨μœ„ μ‹œν€€μŠ€λ₯Ό μœ λ‹ˆμ½”λ“œ λŒ€μ²΄ 문자 U+FFFD(UTF-8) λ˜λŠ” οΏ½ (κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄) 빈 λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜λŠ” λŒ€μ‹ .

 

utf8μ΄λ‚˜ λΉ„μ–΄μžˆλŠ” λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•΄μ£ΌλŠ”μ—­ν• μ„ ν•œλ‹€.

 

그리고 μ„Έλ²ˆμ¨°  $encodingλΆ€λΆ„ 

 

encoding

문자λ₯Ό λ³€ν™˜ν•  λ•Œ μ‚¬μš©λ˜λŠ” 인코딩을 μ •μ˜ν•˜λŠ” 선택적 μΈμˆ˜μž…λ‹ˆλ‹€.

μƒλž΅ ν•˜λ©΄ default_charset κ΅¬μ„± μ˜΅μ…˜ encoding의 값이 기본값이 λ©λ‹ˆλ‹€ .

이 μΈμˆ˜λŠ” 기술적으둜 선택 μ‚¬ν•­μ΄μ§€λ§Œ μ£Όμ–΄μ§„ μž…λ ₯에 λŒ€ν•΄ default_charset κ΅¬μ„± μ˜΅μ…˜μ΄ 잘λͺ» 섀정될 수 μžˆλŠ” 경우 μ½”λ“œμ— μ˜¬λ°”λ₯Έ 값을 μ§€μ •ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€ .

htmlspecialchars() μ˜ 영ν–₯을 λ°›λŠ” 문자 κ°€ μ΄λŸ¬ν•œ λͺ¨λ“  μΈμ½”λ”©μ—μ„œ λ™μΌν•œ μœ„μΉ˜λ₯Ό μ°¨μ§€ν•˜λ―€λ‘œ μΈμ½”딩에 λŒ€ν•΄ μžμ²΄κ°€ μœ νš¨ν•œ 경우 μ΄ ν•¨μˆ˜μ˜ λͺ©μ μ„ μœ„ν•΄ 인코딩 ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252및 KOI8-RλŠ” 사싀상 동일 ν•©λ‹ˆλ‹€.string

λ‹€μŒ 문자 집합이 μ§€μ›λ©λ‹ˆλ‹€.

 

[php] htmlspecialchars μ—λŸ¬ ν•΄κ²°

encoding은 'ISO-8859-1'둜 ν–ˆλ‹€.

 

μˆ˜μ •ν•˜κ³ λ‚˜μ„œ 잘 μž‘λ™ν–ˆλ‹€.

λ°˜μ‘ν˜•

λŒ“κΈ€

πŸ»κ³°μ΄πŸ»λ‹˜μ˜
글이 μ’‹μ•˜λ‹€λ©΄ 응원을 λ³΄λ‚΄μ£Όμ„Έμš”!