의 차이점은 무엇입니까 htmlspecialchars()
및 htmlentities()
. 언제 하나를 사용해야합니까?
답변
HTMLentities에 대한 PHP 문서에서 :
이 기능은 HTML 문자 엔터티에 해당하는 모든 문자가이 엔터티로 변환되는
htmlspecialchars()
것을 제외하고 모든면에서 동일합니다htmlentities()
.
htmlspecialchars에 대한 PHP 문서에서 :
특정 문자는 HTML에서 특별한 의미가 있으며, 의미를 보존하려면 HTML 엔티티로 표시해야합니다. 이 함수는 이러한 변환 중 일부가 포함 된 문자열을 반환합니다. 번역은 일상적인 웹 프로그래밍에 가장 유용한 번역입니다. 모든 HTML 문자 엔티티를 변환해야하는 경우
htmlentities()
대신 사용하십시오.
차이점은 인코딩되는 것입니다. 앰퍼샌드, 큰 따옴표 및 작은 따옴표,보다 작거나 큰 (specialchars)와 같은 모든 (엔티티) 또는 “특수”문자를 선택할 수 있습니다.
htmlspecialchars
가능할 때마다 사용하는 것을 선호 합니다.
예를 들면 다음과 같습니다.
echo htmlentities('<Il était une fois un être>.');
// Output: <Il était une fois un être>.
// ^^^^^^^^ ^^^^^^^
echo htmlspecialchars('<Il était une fois un être>.');
// Output: <Il était une fois un être>.
// ^ ^
답변
htmlspecialchars
사용될 수있다:
-
HTML과 동등한 문자를 모두 인코딩 할 필요가없는 경우
페이지 인코딩이 텍스트 특수 기호와 일치하는 것을 알고 있다면 왜 사용
htmlentities
합니까?htmlspecialchars
훨씬 간단하고 클라이언트에 보낼 코드가 적습니다.예를 들면 다음과 같습니다.
echo htmlentities('<Il était une fois un être>.'); // Output: <Il était une fois un être>. // ^^^^^^^^ ^^^^^^^ echo htmlspecialchars('<Il était une fois un être>.'); // Output: <Il était une fois un être>. // ^ ^
두 번째는 더 짧으며 ISO-8859-1 문자 집합이 설정되어 있으면 아무런 문제가 없습니다.
-
HTML 엔터티 디코딩을 피하기 위해 브라우저를 통해서만 데이터를 처리 할 때,
-
출력이 XML 인 경우 ( Artefacto의 답변 참조 )
답변
이로 인코딩 중입니다 htmlentities
.
implode( "\t", array_values( get_html_translation_table( HTML_ENTITIES ) ) )
:
“& <>
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª«¬ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º»¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Œ œ Š ˆ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς σ τ Φ ω ϑ ϒ ϖ – — ” ‚“” „† ‡ •… ‰ ′ ″‹›‾ ⁄ € ℑ ℘ ℜ ℜ ™ ℵ ← ↑ → ↓ ↔ ↵ ⇐ ⇑ ⇒ ⇓ ⇔ ∀ ∂ ∃ ∅ ∇ ∈ ∈ ∉ ∋ ∏ ∑ − ∗ √ ∝ ∞ ∠ ∧ ∨∩ ∪ ∫ ∴ ∼ ≅ ≈ ≠ ≡ ≤ ≥ ⊂ ⊃ ⊄ ⊆ ⊇ ⊕ ⊗ ⊥ ⋅ ⌈ ⌉ ⌊ ⌋ ⟨⟩ ◊ ♠ ♣ ♥ ♦
이로 인코딩 중입니다 htmlspecialchars
.
implode( "\t", array_values( get_html_translation_table( HTML_SPECIALCHARS ) ) )
:
“& <>
답변
때문에:
- 때로는 XML 데이터를 작성하고 있으며 XML 파일에서 HTML 엔터티를 사용할 수 없습니다.
- 때문에
htmlentities
보다 대체 이상의 문자htmlspecialchars
. 이것은 불필요하며 PHP 스크립트의 효율성이 떨어지고 결과적으로 HTML 코드를 읽을 수 없습니다.
htmlentities
페이지에서 UTF-8 대신 ASCII 또는 LATIN-1과 같은 인코딩을 사용하고 페이지와 다른 인코딩으로 데이터를 처리하는 경우에만 필요합니다.
답변
htmlspecialchars($strText, ENT_QUOTES)
문자열이 XML 및 HTML 안전을 원할 때 사용해야 합니다.
예를 들어, encode
- &에 & amp;
- “~ & quot;
- <에서 & lt;
- >에서 & gt;
- ‘에서 & # 039;
그러나 텍스트에 유니 코드 또는 흔하지 않은 기호 인 추가 문자가있는 경우 htmlentities ()를 사용하여 HTML 페이지에 올바르게 표시되도록해야합니다.
노트:
- ‘는 htmlspecialchars ()에 의해 & # 039; ENT_QUOTES 옵션이 전달 된 경우 & # 039; 그러면 & apos; 이전 버전의 Internet Explorer는 & apos; 실재.
- 기술적으로>는 XML 사양에 따라 인코딩 할 필요는 없지만 일반적으로 <인코딩 요구 사항과 일치하도록 인코딩됩니다.
답변
htmlspecialchars ()
문자열이 HTML로 구문 분석되지 않도록 최소량의 인코딩을 수행합니다. 이렇게 htmlentities ()
하면 인코딩이있는 모든 것을 절대적으로 인코딩하는 데 사용했을 때보 다 문자열을 사람이 읽을 수 있습니다 .
답변
방금 get_html_translation_table
기능 에 대해 알게되었습니다 . 전달 HTML_ENTITIES
하거나 HTML_SPECIALCHARS
인코딩 할 문자와 인코딩 방법이 포함 된 배열을 반환합니다.