htmlspecialchars()和之间有什么区别htmlentities()?我什么时候应该使用其中一种?
Ars*_*nko 371
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>.
// ^ ^
Run Code Online (Sandbox Code Playgroud)
第二个更短,如果设置了ISO-8859-1字符集,则不会引起任何问题.
当不仅通过浏览器处理数据时(为了避免解码HTML实体),
如果输出是XML(参见Artefacto的答案).
Tho*_*ens 328
从htmlentities的PHP文档:
此函数
htmlspecialchars()在所有方面都是相同的,除了htmlentities()具有HTML字符实体等价物的所有字符都被转换为这些实体.
从htmlspecialchars的PHP文档:
某些字符在HTML中具有特殊意义,如果要保留其含义,则应由HTML实体表示.此函数返回一个字符串,其中包含一些转换; 所做的翻译是对日常网络编程最有用的翻译.如果需要翻译所有HTML字符实体,请
htmlentities()改用.
不同之处在于编码.选择是所有(实体)或"特殊"字符,如&符号,双引号和单引号,小于和大于(specialchars).
我希望尽可能使用htmlspecialchars.
Art*_*cto 93
因为:
htmlentities替换的字符多于htmlspecialchars.这是不必要的,使PHP脚本效率降低,并且生成的HTML代码可读性降低.htmlentities 仅当您的页面使用ASCII或LATIN-1等编码而不是UTF-8并且您使用与页面不同的编码处理数据时才需要.
小智 91
这是编码的htmlentities.
implode( "\t", array_values( get_html_translation_table( HTML_ENTITIES ) ) ):
"&<>
¡¢£¤¥|§¨©ª«¬®¯°±²³'μ·¸¹º»¼½¾¿A A A A A AÆÇE E E E I I I I dñ○○○○○×○U U U U第yßA A A A A AæçE E E E I I I I dñ○○○○ö÷øU U U Uýþÿœœ ššŸƒ〜αβγδεζηθ ΙκλμνξΟπρστΥΦΧΨΩαβγδεζηθικλμνξοπρςστ υφχψωθΥπ - - '',"""†‡•...‰'"<>〜/€ℑℜ™ℵ←↑→↓↔↵⇐⇒⇒∀∀∂ ∃∅∇∈∉∋ΠΣ -*√α∞∠∧∨∩∪ ∫∴ 〜≅≈≠≡≤≥⊂⊃ ⊄⊆⊇⊕⊗⊥⋅⌈⌉⌊⌋⟨⟩◊♠♣♥♦
这是编码的htmlspecialchars.
implode( "\t", array_values( get_html_translation_table( HTML_SPECIALCHARS ) ) ):
"&<>
Kme*_*ner 17
htmlspecialchars($strText, ENT_QUOTES)当您只希望字符串是XML和HTML安全时,您应该使用:
例如,编码
但是,如果您的文本中还有其他字符是Unicode或不常见的符号,那么您应该使用htmlentities()来确保它们在HTML页面中正确显示.
笔记:
Eri*_*gue 13
我刚刚发现了这个get_html_translation_table功能.你传递它HTML_ENTITIES或HTML_SPECIALCHARS它返回一个数组,其中包含将被编码的字符以及它们将如何编码.
gro*_*gel 11
htmlspecialchars ()进行最小量的编码以确保您的字符串不会被解析为HTML.这使得您的字符串比以前用于htmlentities ()编码具有编码的所有内容时更加人性化.
htmlentities - 将所有适用的字符转换为HTML实体.
htmlspecialchars - 将特殊字符转换为HTML实体.
翻译在下面执行翻译字符:
您可以查看以下代码,了解有关什么是htmlentities和htmlspecialchars的更多信息:
https://gist.github.com/joko-wandiro/f5c935708d9c37d8940b
htmlspecialchars() 和 htmlentities() 之间的差异非常小。让我们看一些例子:
htmlspecialchars
htmlspecialchars(string $string) 接受多个参数,其中第一个参数是字符串,所有其他参数(某些标志、某些编码等)都是可选的。htmlspecialchars 将字符串中的特殊字符转换为 HTML 实体。例如,如果您 的字符串中有 <br>,htmlspecialchars会将其转换为< >. 而像 µ † 等字符在 HTML 中没有特殊意义。因此它们不会被htmlspecialchars函数转换为 HTML 实体,如下例所示。
echo htmlspecialchars('An example <br>'); // This will print - An example < br >
echo htmlspecialchars('µ †'); // This will print - µ †
Run Code Online (Sandbox Code Playgroud)
html实体
htmlentities ( string $string )与htmlspecialchars非常相似 ,它接受多个参数,其中第一个参数是一个字符串,所有其他参数都是可选的(某些标志、某些编码等)。与htmlspecialchars不同 ,htmlentities不仅将字符串中的特殊字符转换为 HTML 实体, 还将所有适用的字符转换为 HTML 实体。
echo htmlentities('An example <br>'); // This will print - An example < br >
echo htmlentities('µ †'); // This will print - µ †
Run Code Online (Sandbox Code Playgroud)