htmlentities() 与 htmlspecialchars()

问题描述

来自htmlentitiesPHP 文档:

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

来自htmlspecialcharsPHP 文档:

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

不同之处在于被编码的内容。选择是一切(实体)或“特殊”字符,如与号、双引号和单引号、小于和大于(特殊字符)。

我更喜欢尽可能使用htmlspecialchars

例如:

    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;.
    //                ^                 ^

解决方法

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