htmlentities()与htmlspecialchars()

htmlspecialchars()htmlentities()之间有什么区别。 我应该什么时候使用其中一种?


来自htmlentities的PHP文档:

这个函数与htmlspecialchars()在所有方面都是相同的,除了htmlentities() ,所有具有HTML字符实体等价物的字符都被转换为这些实体。

从htmlspecialchars的PHP文档:

某些字符在HTML中有特殊意义,如果要保留它们的含义,应该用HTML实体表示。 该函数返回一个字符串,其中包含一些转换; 翻译是对日常网络编程最有用的。 如果您需要翻译所有HTML字符实体,请改用htmlentities()

不同的是编码。 选择是一切(实体)或一切减去“特殊”字符,如&符号,双引号和单引号,小于和大于(特殊字符)。

我更喜欢尽可能使用htmlspecialchars


可以使用htmlspecialchars

  • 当不需要编码所有具有与HTML等效的字符时。

    如果您知道页面编码与文本特殊符号匹配,您为什么要使用htmlentitieshtmlspecialchars非常简单,并且生成的代码少,可以发送给客户端。

    例如:

    echo htmlentities('<Il était une fois un être>.');
    // Output: &lt;Il &eacute;tait une fois un &ecirc;tre&gt;.
    //                ^^^^^^^^                 ^^^^^^^
    
    echo htmlspecialchars('<Il était une fois un être>.');
    // Output: &lt;Il était une fois un être&gt;.
    //                ^                 ^
    

    第二个更短,如果设置了ISO-8859-1字符集,则不会引起任何问题。

  • 当数据不仅会通过浏览器进行处理(以避免解码HTML实体),

  • 如果输出是XML(请参阅Artefacto的答案)。


  • 因为:

  • 有时您正在编写XML数据,并且您不能在XML文件中使用HTML实体。
  • 因为htmlentitieshtmlspecialchars更多的字符。 这是不必要的,使得PHP脚本的效率降低,并导致HTML代码的可读性降低。
  • 只有当你的页面使用ASCII或LATIN-1等编码而不是UTF-8时,才需要使用htmlentities而你使用与页面不同的编码处理数据。

    链接地址: http://www.djcxy.com/p/9955.html

    上一篇: htmlentities() vs. htmlspecialchars()

    下一篇: New self vs. new static