【问题标题】:Convert special characters to HTML character codes将特殊字符转换为 HTML 字符代码
【发布时间】:2011-04-22 09:45:00
【问题描述】:

我正在为客户开发 CMS,他需要编辑内容并使用特殊字符,例如 ç®。但是,我不希望他必须输入像® 这样的字符代码。有谁知道使用 PHP 自动转换这些字符的好方法吗?

【问题讨论】:

  • 错误。只需确保您的字符编码是一致的(即始终使用 UTF-8),您无需转换这些字符即可完美显示。

标签: php html regex content-management-system special-characters


【解决方案1】:

您可以使用 htmlentities() 来做到这一点。

php -r 'echo htmlentities("®ç", ENT_COMPAT, "UTF-8"), "\n";'
®ç

要将实体转回可读文本,请使用 html_entity_decode():

php -r 'echo html_entity_decode("®ç", ENT_COMPAT, "UTF-8"), "\n";'
®ç

如果您不使用 unicode,请省略字符集名称或提供正确的字符集。

【讨论】:

  • 解决了我几年来一直困扰的问题的绝妙答案。值得注意的是,当您将代码从操作系统移动到操作系统时,其他一些提到复制粘贴或硬编码符号的 ALT KeyCode 版本的答案将不起作用。
【解决方案2】:

最简单的方法是从一开始就使用 UTF-8。
但你也可以用 DOM 自动转换字符:

$dom = new DOMDocument;
$dom->appendChild(new DOMText('© oui içi » '));
echo $dom->saveHtml();

输出

© oui içi » 

【讨论】:

    【解决方案3】:

    使用 unicode,并向他展示如何从字符映射中复制和粘贴 :-)

    【讨论】:

    • @Alin 我想说,这不是一个那个坏的答案——如果客户端已经在使用像ç和®这样的字符,那么使用UTF-8,比如说, CMS 的输入、存储和输出将使您不再需要 HTML 实体。就像在这个网页上所做的那样,例如,我刚刚输入“®”,将其发送到站点,并且该站点将其显示为“®”——查看此页面的源代码,你就赢了'在那里看不到 HTML 实体,只是实际的、真实的字符。
    • @MattGibson 一个问题是,如果您使用源代码控制并且在基于 unix 的操作系统和 Windows 操作系统之间来回移动代码。我已经了解到 ALT 键代码在操作系统中无法按照您希望的方式工作。
    【解决方案4】:

    你可以使用:

    htmlentities

    【讨论】:

      【解决方案5】:

      看看htmlentities 函数。这需要一个字符串并将组件字符转换为它们的 HTML 实体。您可以指定字符串的编码与用户的输入保持一致。

      【讨论】:

        猜你喜欢
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-02
        • 2013-03-08
        相关资源
        最近更新 更多